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;
	}
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值