k-yamadaのブログ

プログラミングのメモ

Rubyで文字列で一意にきまるハッシュ値を取得する

Objectのhashメソッドは使わないこと

hashメソッドの戻り値は、rubyを実行するたびに変わります。従って、ハッシュ値を永続化したい場合等には使えません。

$ irb
> "hoge".hash
 => -3237379387648982978 
> "hoge".hash
 => -3237379387648982978 
> exit

$ irb
 > "hoge".hash
 => 2500386903580634777 

MD5ハッシュ関数を使う

MD5ハッシュ関数で取得した値は、文字列毎に一意な値が返るので、永続化が可能です。

$ irb
> require 'digest/md5'
 => true 
> Digest::MD5.new.update('hoge').to_s
 => "ea703e7aa1efda0064eaa507d9e8ab7e" 
> exit

$ irb
> require 'digest/md5'
 => true 
> Digest::MD5.new.update('hoge').to_s
 => "ea703e7aa1efda0064eaa507d9e8ab7e"