Java AES加解密

由SecureRandom随机生成key

KeyGenerator kgen = KeyGenerator.getInstance("AES");
// 防止linux下 随机生成key
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password.getBytes());
kgen.init(128, secureRandom);
// kgen.init(128, new SecureRandom(password.getBytes()));
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");// 创建密码器
cipher.init(Cipher.DECRYPT_MODE, key);// 初始化
byte[] result = cipher.doFinal(content);
return result; // 加密

指定key iv

Cipher cipher = Cipher.getInstance("AES/CBC/ISO10126Padding");
SecretKeySpec keySpec = new SecretKeySpec(Base64.getDecoder().decode(key), "AES");
// 设置偏移量参数
IvParameterSpec ivSpec = new IvParameterSpec(Base64.getDecoder().decode(iv));
cipher.init(Cipher.DECRYPT_MODE, keySpec, ivSpec);

byte[] encryped = cipher.doFinal(data);
byte[] decrypted=new byte[data.length];
System.arraycopy(encryped, 0, decrypted, 0, encryped.length);
return new String(decrypted, "utf-8").trim();
posted @ 2024-01-25 10:38  MangoJuice  阅读(3)  评论(0编辑  收藏  举报