From: Takahiro Kambe Date: 2001-03-02T18:59:39+09:00 Subject: [ruby-list:28426] Re: crypt In message <200103020836.RAA07709@hanare00.math.sci.hokudai.ac.jp> on Fri, 2 Mar 2001 17:36:48 +0900, gotoken@math.sci.hokudai.ac.jp (GOTO Kentaro) wrote: > もっとも String#crypt は任意の長さの文字列に対していつも、13 > 文字からなるの文字列を値として返しますから多対一ではあります。 思わず、rubyのソースを追いました。システムが用意しているcrypt(3)をその まま使っている様です。 となると多くのDESベースの場合は、任意の文字列を渡されても最初の8バイト だけで後ろの方は捨て去っていることになります。 MD5を行ってくれるcrypt(3)が備わっている場合は、そっちを使うと任意の文 字列が反映されます。どうやって選ぶか、選べるかどうかからシステムに依存 するわけですが、NetBSDではrubyの文字列のcryptメソッドの引数の与え方に よって決まります。 % irb irb(main):001:0> a = "abcdefghijklmnopqrs" "abcdefghijklmnopqrs" irb(main):002:0> b = "abcdefghijklmn" "abcdefghijklmn" irb(main):003:0> a.crypt("foo") "foEoVhbk7ad7A" irb(main):004:0> b.crypt("foo") "foEoVhbk7ad7A" irb(main):005:0> a.crypt("$foo") "$1$$hcruYhYrrnUgZWIJtdcTl/" irb(main):006:0> b.crypt("$foo") "$1$$0/8MOPt60jMQ3mjMSf8NN/" -- 神戸 隆博(かんべ たかひろ) at 仕事場