原因:windows中,java使用des加密,生成的密钥是稳定不变的所以,加密解密成功。
但是在linux中,des加密解密生成的密钥,是在变化的,所以加密后,解密失败,
代码修改如下:
生成密钥方法:
public static String getSecretKey(String key) throws Exception {
KeyGenerator keyGenerator = KeyGenerator.getInstance(ALGORITHM);
SecureRandom secureRandom;、
// 代码修改前:
// if (seed != null && !"".equals(key)) {
// secureRandom = new SecureRandom(key.getBytes());
// } else {
// secureRandom = new SecureRandom();
// }
// 代码修改后 防止linux随即生成key :
if (key != null && !"".equals(key)) {
secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(key.getBytes("UTF-8"));
} else {
secureRandom = SecureRandom.getInstance("SHA1PRNG");
}
keyGenerator.init(KEY_SIZE, secureRandom);
SecretKey secretKey = keyGenerator.generateKey();
return Base64.getEncoder().encodeToString(secretKey.getEncoded());
}