package com.ericsson.dve.custom.authenticationplugin;
import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.Security;
import java.util.Scanner;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class Encyptor {
private Cipher c;
private static byte[] caay = {99, 61, 84, -69, 84, 56, -42, 114, -10, 124, 31, -48, -27, 3, 40, 56};
private SecretKey cay;
public Encyptor() throws NoSuchAlgorithmException, NoSuchPaddingException{
Security.addProvider(new com.sun.crypto.provider.SunJCE());
cay = new SecretKeySpec(caay, "AES");
c = Cipher.getInstance("AES");
}
/**
*
*
* @param str
* @return
* @throws InvalidKeyException
* @throws IllegalBlockSizeException
* @throws BadPaddingException
*/
public String Encrytor(String str) throws InvalidKeyException,
IllegalBlockSizeException, BadPaddingException {
c.init(Cipher.ENCRYPT_MODE, cay);
byte[] src = str.getBytes();
byte[] cipherByte = c.doFinal(src);
String base64Byte = new String(Base64.encodeBase64(cipherByte));
return base64Byte;
}
/**
* 对字符串解密
*
* @param buff
* @return
* @throws InvalidKeyException
* @throws IllegalBlockSizeException
* @throws BadPaddingException
* @throws IOException
*/
public String Decryptor(String encpytedCode) throws InvalidKeyException,
IllegalBlockSizeException, BadPaddingException, IOException {
c.init(Cipher.DECRYPT_MODE, cay);
byte[] base64Byte = Base64.decodeBase64(encpytedCode.getBytes());
byte[] cipherByte = c.doFinal(base64Byte);
return new String(cipherByte);
}
/**
* @param args
* @throws NoSuchPaddingException
* @throws NoSuchAlgorithmException
* @throws BadPaddingException
* @throws IllegalBlockSizeException
* @throws InvalidKeyException
*/
public static void main(String[] args) {
// String msg ="郭XX-搞笑相声全集";
// String msg ="secret";
// System.out.println("text:" + msg);
// String encypted;
//try {
//encypted = new Encyptor().Encrytor(msg);
//System.out.println("after encode: " + new Encyptor().Encrytor(msg));
// System.out.println("after decode: " + new Encyptor().Decryptor(encypted));
//} catch (Exception e) {
//e.printStackTrace();
//}
System.out.println("please input password, please input 'exit' to exit");
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String s = scan.next();
if("exit".equalsIgnoreCase(s)){
break;
}
try {
String encypted = new Encyptor().Encrytor(s);
System.out.println("after encode: " + new Encyptor().Encrytor(s));
System.out.println("after decode: " + new Encyptor().Decryptor(encypted));
} catch (Exception e) {
e.printStackTrace();
}
}
scan.close();
}
}
相关推荐
加密算法加密算法加密算法加密算法加密算法加密算法加密算法加密算法
QT 实现AES 加密算法
RSA加密算法在VBRSA加密算法在VBRSA加密算法在VB
DES,DES加密算法,DES算法源码。用C写的DES加密算法。 DES,DES加密算法,DES算法源码。 DES加密算法(c语言实现) (本程序可以直接使用)
aes加密算法delphi
RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rivest)、阿迪·萨莫尔(Adi Shamir)和伦纳德·阿德曼(Leonard Adleman)一起提出的。1987年首次公布,当时他们三人都在麻省理工学院工作。RSA就是他们三人姓氏...
非对称加密算法流程图,使用visio绘制。
PBE算法是对称加密算法的综合算法,常见算法PBEWithMD5AndDES,使用MD5和DES算法构建了PBE算法。将盐附加在口令上,通过消息摘要算法经过迭代获得构建密钥的基本材料,构建密钥后使用对称加密算法进行加密解密。 ...
加密算法
凯撒密码的通用加密算法是:C=E(P)=(P+K) mod 26 凯撒密码的通用解密算法是:C=E(P)=(P-K) mod 26 (2) 基本要求 实现凯撒密码的加密、解密算法,能够根据用户选择密钥(移位数)和明文进行加解密。
本文给出了用软件实现的加密算法的性能分析,这些加密算法都是为小型化应用而设计的。本文着重分析了诸如内存消 耗和能量需求等在微型平台所注重的特性。DESL, HIGHT, XXTEA 都在谈论之列。加密算法通过C 语言在8 位...
这是我编写的MD5加密算法的全部源代码MD5加密算法.dsp This file (the project file) contains information at the project level and is used to build a single project or subproject. Other users can share ...
本源程序是网络课程的大作业,是实现一个名为twofish的加密算法,开发环境是vc++6.0,保证编译通过,而且附带有详细的文档。
MD5 加密算法JS文件,MD5算法原版描述
主要介绍RSA非对称加密算法的由来和应用场景,以及加密原理
椭圆加密算法(ECC)是一种公钥加密体制,最初由Koblitz和Miller两人于1985年提出,其数学基础是利用椭圆曲线上的有理点构成Abel加法群上椭圆离散对数的计算困难性。与经典的RSA,DSA等公钥密码体制相比,椭圆密码...
RSA加密算法.ppt
C++实现 MD5加密算法 可直接调用 hash1加密算法 MD5加密算法 MD5加密算法
MD5就是采用单向加密的加密算法,对于MD5而言,有两个特性是很重要的,第一是任意两段明文数据,加密以后的密文不能是相同的;第二是任意一段明文数据,经过加密以后,其结果必须永远是不变的。前者的意思是不可能有...