小编loc*_*s2k的帖子

RHE 7 不尊重 java 安全随机种子

我手头有一个难题。我创建了一个 AES 服务来加密/解密敏感信息。AES 密钥是使用 java 的SecureRandom. 我有一个受保护的文件,用于存储种子,并且在调用服务时,种子将填充到安全随机类中。

为了确保它有效,我有以下逻辑:

private boolean secureRandom(final String seed) {
  SecureRandom sr1 = new SecureRandom(seed.getBytes(UTF8_CHARSET));
  SecureRandom sr2 = new SecureRandom(seed.getBytes(UTF8_CHARSET));
  //Two secure random with the same seed should generate the same results
  boolean secureRandomWorks = sr1.nextLong() == sr2.nextLong();
  if (!secureRandomWorks) {
    System.err.println("Secure random not supported. Defaulting to old key");
  }
  return secureRandomWorks;
}
Run Code Online (Sandbox Code Playgroud)

这里的想法是我应该能够使用相同的种子创建两个安全的随机对象,并且它们在调用时都应该返回相同的值nextLong()

当我在 Windows 计算机上部署应用程序时,这工作正常,但当我将其部署在 RHEL 7 计算机上时,我收到错误。

我的印象是,只要种子相同,两个实例总是会产生相同的输出。在 Windows 上似乎是这种情况,但当我在 RHEL 7 上测试时,情况似乎并非如此。

我创建了这个简单的测试来进行验证:

SecureRandom sr1 = new SecureRandom("encryptionKey".getBytes("UTF-8"));
SecureRandom …
Run Code Online (Sandbox Code Playgroud)

java rhel rhel7 secure-random

2
推荐指数
1
解决办法
827
查看次数

标签 统计

java ×1

rhel ×1

rhel7 ×1

secure-random ×1