teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

語弊があったので修正

2016/10/21 05:57

投稿

maisumakun
maisumakun

スコア146649

answer CHANGED
@@ -2,4 +2,4 @@
2
2
 
3
3
  もちろん、セキュリティ上で重要な値(トークン、鍵など)に使うのであれば、MD5で「意図的に衝突する」データを作れることは問題となります。ただ、それは**意図して重複するデータを作った場合**の話で、偶然に作っていての衝突確率はじゅうぶんに低いです。
4
4
 
5
- とはいえ、`rand()`の品質は**絶望的に悪い**ので、OpenSSLの使える環境ならMD5を使わずに、`openssl_random_pseudo_bytes()`から完全ランダムを得てしまうのがいいかと思います。
5
+ とはいえ、`rand()`の品質は**絶望的に悪い**ので、OpenSSLの使える環境ならMD5を使わずに、`openssl_random_pseudo_bytes()`から暗号学的も安全擬似乱数を得てしまうのがいいかと思います(上の「誕生日攻撃」にもあるように、長さを長くすれば実用上衝突を無視することができるレベルは容易に達成できます)