日々精進

新しく学んだことを書き留めていきます

SecureRandomのSeedがLinux環境で固定できない

以下の現象が起きた。

  • Windows環境ではSecureRandomのコンストラクタにSeed値を渡すとSeedを固定できる(=同じ文字列を何度も暗号化すると毎回同じ値が出力される)
  • Linux環境では同じコードでもSeedを固定できない

docs.oracle.com

↑のHPに以下の記載がある。ここから、Linux環境ではSeed生成や乱数生成時に/dev/randomから真の乱数を生成していると予想される。Linux環境ではコンストラクタにSeedを渡してもそれは無視されて/dev/randomから取得した値を使うようになっているのではと思われる。

注: 実装によっては、generateSeedメソッドおよびnextBytesメソッドは、たとえばそれらがUNIX系オペレーティング・システムの/dev/randomから読み取る必要がある場合に、エントロピーが収集されるときにブロックされることがあります。

参考:

stackoverflow.com

gist.github.com