java实现AES加密解密

public class PartnerSign {private PartnerSign() {}/*** AES加密方法** @param content  明文内容* @param password 密码* @return 解密后字节数组转十六进制字符串*/public static String encrypt(String content, String password) throws Exception {SecretKeySpec key = generateKey(password);Cipher cipher = Cipher.getInstance("AES");// 创建密码器byte[] byteContent = content.getBytes("utf-8");cipher.init(Cipher.ENCRYPT_MODE, key);// 初始化为加密模式的密码器byte[] result = cipher.doFinal(byteContent);// 加密return Hex.encodeHexString(result);}/*** AES解密** @param content  密文内容* @param password 密码* @return 解密后的明文* @throws Exception */public static String decrypy(String content, String password) throws Exception {SecretKeySpec key = generateKey(password);Cipher cipher = Cipher.getInstance("AES");// 创建密码器cipher.init(Cipher.DECRYPT_MODE, key);// 初始化byte[] array = Hex.decodeHex(content.toCharArray());byte[] result = cipher.doFinal(array);return new String(result); // 加密}/*** 生成key* @Title: generateKey* @param password* @return SecretKeySpec* @throws NoSuchAlgorithmException */private static SecretKeySpec generateKey(String password)throws NoSuchAlgorithmException {KeyGenerator kgen = KeyGenerator.getInstance("AES");SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG" );  secureRandom.setSeed(password.getBytes());  kgen.init(128, secureRandom);// 利用用户密码作为随机数初始化出SecretKey secretKey = kgen.generateKey();byte[] enCodeFormat = secretKey.getEncoded();SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");return key;}
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部