2010-12-15 8 views

答えて

15

幸いにも、答えは簡単です:

~$ ruby1.8 -e 'p "hello world".hash' 
444332266 
~$ ruby1.9 -e 'p "hello world".hash' 
-194819219 

あなたは組み込みのハッシュ方式を使用している場合は、私は必要なハッシュコードを生成し、ビルドプロセスの一部としてスクリプトを持つことをお勧めします。あるマシンから次のマシンまで同じものであることは保証されていないことに注意してください。

あなたが一貫性のあるハッシュが必要な場合は、CRC32またはSHA1のようなものを使用します。

>> require 'zlib' 
>> Zlib.crc32 "hello world" 
=> 222957957 
>> require 'digest' 
>> Digest::SHA1.hexdigest "hello world" 
=> "2aae6c35c94fcfb415dbe95f408b9ce91ee846ed" 
>> Digest::MD5.hexdigest "hello world" 
=> "5eb63bbbe01eeed093cb22bb8f5acdc3" 

彼らは全く異なる目的を持っていますが、SHA1がある一方、CRC32は、32ビットの数値を返すと、非常に高速であるという利点を持っています80ビットの数値ですが、より安全です。 (私はこれが暗号化目的ではないと仮定していますが、必要ならばSHA-256を調べます)

+0

ルビーのハッシュ関数が信頼できないと判断していただきありがとうございます。私は自分自身を選択する必要がありますハッシュ関数は、ルビーのハッシュコードのようなコードを生成する。何か提案がありますか?私はもう1つの質問を追加しましたか? – ywenbo

+0

を使用する必要がありますか? MD5 SHAなど?大いに感謝する。 – ywenbo

+0

@ywenbo私もそれに答えました。 –

関連する問題