AES 加密解密

 

 

 

 

 

 

import java.security.*;

import java.io.*;

 

import javax.crypto.*;

import javax.crypto.spec.*;

public class Test {

 

/**

* @param strKey 加密密码

* @param content 待加密内容

* @return

* @throws Exception

*/

public byte[] encryKey(String strKey, String content) throws Exception{

System.out.println("需要加密的内容: " + content);

String encryAlgorithm = "AES";

System.out.println("strKey: " + strKey);

KeyGenerator keyGenerator = KeyGenerator.getInstance(encryAlgorithm);

strKey = strKey == null ? "" : strKey;

keyGenerator.init(128, new SecureRandom(strKey.getBytes("utf-8")));

 

SecretKey encryKey = keyGenerator.generateKey();

byte[] encryKeyByte = encryKey.getEncoded();

 

SecretKeySpec encrySpec = new SecretKeySpec(encryKeyByte, encryAlgorithm);

Cipher cipher = Cipher.getInstance(encryAlgorithm);

cipher.init(Cipher.ENCRYPT_MODE, encrySpec);

byte[] encryptData = cipher.doFinal(content.getBytes("utf-8"));

 

StringBuffer encryMsisdn = new StringBuffer();  

for (int i = 0; i < encryptData.length; i++) {  

       String hex = Integer.toHexString(encryptData[i] & 0xFF);  

       if (hex.length() == 1) {  

               hex = '0' + hex;  

       }  

       encryMsisdn.append(hex.toUpperCase());  

}

System.out.println("test by xiao after: " + encryMsisdn);

return encryptData;

}

 

/**

* @param strKey 解密密码

* @param content 待解密内容

*/

public void decodeKey(String strKey, byte[] content) {

String decAlgorithm = "AES";

KeyGenerator decKeyGenerator;

System.out.println("解密密码: " + strKey);

try {

decKeyGenerator = KeyGenerator.getInstance(decAlgorithm);

strKey = strKey == null ? "" : strKey;

decKeyGenerator.init(128, new SecureRandom(strKey.getBytes("utf-8")));

 

SecretKey decKey = decKeyGenerator.generateKey();

byte[] decKeyByte = decKey.getEncoded();

SecretKeySpec decSpec = new SecretKeySpec(decKeyByte, decAlgorithm);

Cipher decCipher = Cipher.getInstance(decAlgorithm);

decCipher.init(Cipher.DECRYPT_MODE, decSpec);

 

byte[] decData = decCipher.doFinal(content);

System.out.println("解密后字符串:" + new String(decData));

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

}catch(UnsupportedEncodingException e){

e.printStackTrace();

}catch(NoSuchPaddingException e){

e.printStackTrace();

}catch(InvalidKeyException e){

e.printStackTrace();

}catch(IllegalBlockSizeException e){

e.printStackTrace();

}catch(BadPaddingException e){

e.printStackTrace();

}finally{

 

}

System.out.println("done....");

}

 

public static void main(String[] args) throws Exception {

Test des = new Test();

//加密

byte[] encryData = des.encryKey(null, "1234588一eee");

//解密

des.decodeKey(null, encryData);

}

 

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值