[PHP-users 20493]Re: mcrypt関数で暗号化した結果について

NAKAMURA Takeshi 1yen @ sh.rim.or.jp
2004年 2月 20日 (金) 15:08:32 JST


仲村です


 md5 というような hash は 入力が少し変わると出力が大きく
変わることが良い関数の目安とされているそうです。

On Fri, 20 Feb 2004 14:09:51 +0900,
 lavlav @ paw.hi-ho.ne.jp wrote:

> mb5($str)
>
> $strが1文字でも違えば「必ず」違う値が帰ってくるのでしょうか?

 経験的に真ですが、絶対ではありません。

> $strの中身は違うんだけどmb5()での値は一緒って事はないのですか?

 入力は無制限 出力は必ず16バイト となれば重ならないようにすることは
原理的に不可能です。
 ですので、TripWire等が行う改竄検知には 複数のハッシュ関数
(md2,md4,mdc2,rmd160...)や、ファイルサイズを併用して 確実性を
高めることが行われています。

 md5 だと 2^64 / sha1 だと 2^160 なので両方を組みあわせると
確率としては 2^(64+160) となると。
 ==> 両方の hash値が同じまま、ファイルを改竄するのは難しくなる
----+----1----+----2----+----3----+----4----+----5----+----6----+----7----+
 関西沖縄青年の集い がじまるの会 手伝い 一人だけの勝手に神奈川支部
 仲村 武 <1yen @ sh.rim.or.jp>
 FreeBSDのportsは、md5 と ファイルサイズで OpenBSDのportsは
 sha1,rmd160,md5 を使って ソースの検査しているみたいです。


PHP-users メーリングリストの案内