有A、B两个不同的服务,A进行加密 发送给B进行解密
在windows服务器测试没有问题,linux上存在问题
解决办法如下
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator kgen = KeyGenerator.getInstance(KEY_AES);
//2.根据ecnodeRules规则初始化密钥生成器
//生成一个128位的随机源,根据传入的字节数组
// kgen.init(128, new SecureRandom(key.getBytes(DEFAULT_CHARSET))); // new SecureRandom() 在Linux环境下会导致解密失败,建议使用下面两句
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(key.getBytes(DEFAULT_CHARSET));
kgen.init(128, random);
//SecureRandom 实现完全隨操作系统本身的内部状态,除非调用方在调用 getInstance 方法之后又调用了 setSeed 方法;该实现在windows上每次生成的 key 都相同,但是在 linux 系统上则不同
网友评论