わたなべです. Masatoshi SEKI <m_seki / mva.biglobe.ne.jp> writes: :UNIX Magazine 1999年11月号の「インターフェイスの街角」に :出ていたsignature法のRubyモジュールを作ってみました。 わたしもこれを読んで面白そうだなと思っていろいろ実験してました. でもある程度ファイルが大きくなると signature が全ビット 1 に なり使いものにならないんですよね. 3 バイトでってのはちょっと手を抜きすぎかも. ていうかそこを工夫してもやっぱ数KBぐらいが限界という気も. #!/usr/local/bin/ruby module SigMethod def SigMethod.calc s len = s.length - 3 len = 0 if len < 0 sig = 0 for i in 0..len sig |= (1 << s[i, 3].hash % 1024) end sig end def SigMethod.match(text, pat) # printf "%x\n", text & pat # printf "%x\n", pat (text & pat) == pat end end text = SigMethod.calc("hogeほげfoo") pat = SigMethod.calc("ほげ") p SigMethod.match(text, pat) -- わたなべひろふみ