文章内容
1、加密
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | private static final String DEFAULT_CHARSET = "UTF-8" ; /** * AES加密字符串 * * @param content * 需要被加密的字符串 * @param password * 加密需要的密码 * @return 密文 */ public static byte [] aesEncrypt(String content, String password) { byte [] result = null ; try { /** * 创建AES的Key生产者 */ KeyGenerator kgen = KeyGenerator.getInstance( "AES" ); /** * 利用用户密码作为随机数初始化出 * 128位的key生产者 * 加密没关系,SecureRandom是生成安全随机数序列,password.getBytes()是种子,只要种子相同,序列就一样,所以解密只要有password就行 */ kgen.init( 128 , new SecureRandom(password.getBytes())); /** * 根据用户密码,生成一个密钥 */ SecretKey secretKey = kgen.generateKey(); /** * 返回基本编码格式的密钥,如果此密钥不支持编码,则返回null */ byte [] enCodeFormat = secretKey.getEncoded(); /** * 转换为AES专用密钥 */ SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES" ); /** * 创建密码器 */ Cipher cipher = Cipher.getInstance( "AES" ); byte [] byteContent = content.getBytes(DEFAULT_CHARSET); /** * 初始化为加密模式的密码器 */ cipher.init(Cipher.ENCRYPT_MODE, key); /** * 加密 */ result = cipher.doFinal(byteContent); } catch (Exception e) { // Do nothing } return result; } |
2、解密
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | /** * 解密AES加密过的字符串 * * @param content * AES加密过过的内容 * @param password * 加密时的密码 * @return 明文 */ public static String aesDecrypt( byte [] content, String password) { String result = null ; try { /** * 创建AES的Key生产者 */ KeyGenerator kgen = KeyGenerator.getInstance( "AES" ); kgen.init( 128 , new SecureRandom(password.getBytes())); /** * 根据用户密码,生成一个密钥 */ SecretKey secretKey = kgen.generateKey(); /** * 返回基本编码格式的密钥 */ byte [] enCodeFormat = secretKey.getEncoded(); /** * 转换为AES专用密钥 */ SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES" ); /** * 创建密码器 */ Cipher cipher = Cipher.getInstance( "AES" ); /** * 初始化为解密模式的密码器 */ cipher.init(Cipher.DECRYPT_MODE, key); byte [] res = cipher.doFinal(content); /** * 明文 */ result = new String(res, DEFAULT_CHARSET); } catch (Exception e) { // Do nothing } return result; } |