自己写了个加密和解密的小程序和大家分享一下。
public class TestEncrypt {
/**
* TODO <Method comments>
*
* @param args
* @author YinPengBo ,2011-1-10下午04:35:12
* @modified
*/
//密钥生成器
private KeyGenerator keygen;
//负责保存密钥
private SecretKey skey;
//加密和解密工具
private Cipher c;
//负责保存加密结果
private byte[] cipherByte;
public TestEncrypt(){
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
//获得密钥生成器对象
keygen = KeyGenerator.getInstance("DES");
//生成密钥
skey = keygen.generateKey();
//生成cipher对象
c = Cipher.getInstance("DES");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
*
* construction a new instance. TODO <Sth.>
*
* @param encryptModel 加密方法:如,DES,AES
*/
public TestEncrypt(String encryptModel){
Security.addProvider(new com.sun.crypto.provider.SunJCE());
try {
//获得密钥生成器对象
keygen = KeyGenerator.getInstance(encryptModel);
//生成密钥
skey = keygen.generateKey();
//生成cipher对象
c = Cipher.getInstance(encryptModel);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 对字符串进行加密
* TODO <Method comments>
*
* @param str 要加密的字符串
* @return
* @author YinPengBo ,2011-1-11下午02:57:07
* @modified
*/
public String createEncryptor(String str){
//用密钥初始化cipher,指定方式目前为加密
try {
c.init(Cipher.ENCRYPT_MODE, skey);
//加密保存
cipherByte = c.doFinal(str.getBytes());
//用Base64的encode方法将byte转成String
String encode= Base64.encode(cipherByte);
return encode;
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
/**
* 解密
* TODO <Method comments>
*
* @param buff,加密后的字节
* @return
* @author YinPengBo ,2011-1-11下午03:03:04
* @modified
*/
public String createDencryptor(String passStr){
try {
//初始化Cipher,指定目前为解密
c.init(Cipher.DECRYPT_MODE, skey);
//用Base64的decode方法将String转成byte
byte[] bytes = Base64.decode(passStr);
cipherByte = c.doFinal(bytes);
return new String(cipherByte);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "";
}
}
public static void main(String[] args) {
TestEncrypt te = new TestEncrypt("AES");
String testStr = "tom123&id=尹鹏波***……&……&1324";
System.out.println("加密前:"+testStr);
String afterEncryptStr = te.createEncryptor(testStr);
System.out.println("加密后:"+afterEncryptStr);
System.out.println("解密后:"+te.createDencryptor(afterEncryptStr));