300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > java对数据加解密_java 使用AES对数据进行加密和解密

java对数据加解密_java 使用AES对数据进行加密和解密

时间:2018-07-12 02:12:32

相关推荐

java对数据加解密_java 使用AES对数据进行加密和解密

public class AESUtil {

private static String key= "123456";

/**

* 加密

* @param content待加密内容

* @param key 加密的密钥

* @return

*/

public static String encrypt(String content, String key) {

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");//构造密钥生成器,指定为AES算法,不区分大小写

kgen.init(128, new SecureRandom(key.getBytes()));

SecretKey secretKey = kgen.generateKey();

byte[] enCodeFormat = secretKey.getEncoded();

SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");

Cipher cipher = Cipher.getInstance("AES");

byte[] byteContent = content.getBytes("utf-8");

cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);//ENCRYPT_MODE指加密操作

byte[] byteRresult = cipher.doFinal(byteContent);

StringBuffer sb = new StringBuffer();

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

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

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

hex = '0' + hex;

}

sb.append(hex.toUpperCase());

}

return sb.toString();

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}

return null;

}

/**

* 解密

* @param content 待解密内容

* @param key 解密的密钥

* @return

*/

public static String decrypt(String content, String key) {

if (content.length() < 1)

return null;

byte[] byteRresult = new byte[content.length() / 2];

for (int i = 0; i < content.length() / 2; i++) {

int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);

int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2),16);

byteRresult[i] = (byte) (high * 16 + low);

}

try {

KeyGenerator kgen = KeyGenerator.getInstance("AES");

SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");

secureRandom.setSeed(key.getBytes());

kgen.init(128, secureRandom);

SecretKey secretKey = kgen.generateKey();

byte[] enCodeFormat = secretKey.getEncoded();

SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");

Cipher cipher = Cipher.getInstance("AES");

cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);//Decrypt_mode指解密操作

byte[] result = cipher.doFinal(byteRresult);

return new String(result,"utf-8");//不加utf-8,中文时会乱码

} catch (NoSuchAlgorithmException e) {

e.printStackTrace();

} catch (NoSuchPaddingException e) {

e.printStackTrace();

} catch (InvalidKeyException e) {

e.printStackTrace();

} catch (IllegalBlockSizeException e) {

e.printStackTrace();

} catch (BadPaddingException e) {

e.printStackTrace();

}catch (Exception e) {

e.printStackTrace();

}

return null;

}

//重载的方法,使用默认密钥

public static String decrypt(String content) {

return decrypt(content, key);

}

public static String encrypt(String content) {

return encrypt(content, key);

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。