相同的加密逻辑,不同的运行环境,导致结果不同 本地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种子的结果都不同
但是本地测试却没有异常。这也是为什么本地准入能通过,但是测试环境准入通过不了。
因为测试环境每次生成的种子都不同