以下の現象が起きた。
- Windows環境ではSecureRandomのコンストラクタにSeed値を渡すとSeedを固定できる(=同じ文字列を何度も暗号化すると毎回同じ値が出力される)
- Linux環境では同じコードでもSeedを固定できない
↑のHPに以下の記載がある。ここから、Linux環境ではSeed生成や乱数生成時に/dev/randomから真の乱数を生成していると予想される。Linux環境ではコンストラクタにSeedを渡してもそれは無視されて/dev/randomから取得した値を使うようになっているのではと思われる。
注: 実装によっては、generateSeedメソッドおよびnextBytesメソッドは、たとえばそれらがUNIX系オペレーティング・システムの/dev/randomから読み取る必要がある場合に、エントロピーが収集されるときにブロックされることがあります。
参考: