Crypt::Random::TESHA2
timer/scheduleのエントロピーを使用して乱数を生成する。
use Crypt::Random::TESHA2 qw(random_bytes);
モジュールをロードして関数をエクスポートする。
my $r = random_bytes($n);
バイト数を指定して乱数を生成する。
最長$nバイトの乱数が生成される($nバイト未満の値を含む)。
Crypt::Randomは、生成された乱数を10進表記で返すが、このモジュールはバイナリ表現で返すので、ブロック暗号系のモジュールと親和性が高い。また、/dev/random や /dev/urandom を使わないのでActive Perlでも動く。
Crypt::Random(/dev/random)よりはエントロピーが低いと思われる(※)が、実測すると、7.6bit / 8bit くらいの最小エントロピーが出力されるので、DRNGのシード生成などには十分だろう。
(※)/dev/random はエントロピーを測定するために多量の乱数を出力させると、エントロピーソースが枯渇してしまい、正確なエントロピーが測定できないので推定。