2

http://php.net/manual/en/function.mt-rand.phpから:

注意この関数は、暗号的に安全な値を生成しないため、暗号化の目的で使用しないでください。

ウェブサイトのコンテキストでこれが何を意味するのか誰か説明してもらえますか? セキュリティトークンの生成に使用すべきではないということですか?

32 ビット システムPHP_INT_SIZEでは、20 億をわずかに超えています。数字を生成し、mt_rand(0, PHP_INT_SIZE)たとえば 100 文字の長いランダムな文字列を追加してセキュリティ トークンとして使用すると、安全でないと言っていますか?

4

2 に答える 2

2

「セキュリティトークン」がnonceを意味する場合、つまり、ほぼ確実に一意である必要がある1回限りのトークンである場合mt_randは、問題ありません。

このコンテキストでの「暗号的に安全な値を生成しない」とは、ジェネレーターの状態に関する十分な情報が与えられれば、誰かがその出力が将来どうなるかを予測できることを意味します。上記の出力を使用して機密情報を暗号化する場合、これは明らかに契約違反です。

于 2013-06-28T10:47:58.463 に答える