AES 不同服务器间解密失败

有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 系统上则不同

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容