相同的加密逻辑,不同的运行环境,导致结果不同 本地AES 通过SecureRandom随机数加密

以操作系统种的随机事件作为种子。不同的操作系统产生的随机事件不同,种子也就不同
 
通过参数 -Djava.security.egd=file:/dev/urandom 来指定 seed 源
在new SecureRandom 时,如果没有指定prng 则会使用默认的prng,并且使用engineSetSeed进行种子初始化
 

 

 

此时,使用自定义的seed进行种子设置

 

 

在 sun.security.provider.SecureRandom.engineSetSeed 方法里,新种子的生成不仅和刚设置的 seed 有关,也和原来的种子(系统产生的 seed)有关。
 

 

 

 

 

 
通过以上测试代码可知,在docker环境中,每次SecureRandom encode种子的结果都不同
 
 

 

 

 
但是本地测试却没有异常。这也是为什么本地准入能通过,但是测试环境准入通过不了。
因为测试环境每次生成的种子都不同

posted on 2020-09-07 14:03  月满清爵  阅读(925)  评论(0编辑  收藏  举报