digestをいじってみる

前回のhashの応用で用いた"Digest::SHA256"で書いたsha256.rbを"Digest::MD5"に書き換えてみる。リファレンスマニュアルでlibrary digestをみると

全てのメッセージダイジェストの実装クラスは、基底クラスである Digest::Base と同じインタフェースを持ちます。

なので、SHA256クラスからMD5クラスに変えてsha256.rbをmd5.rbに書き変えてみた。

sha256.rb

require "digest/sha2"


$*.each do |file|
  sha = Digest::SHA256.new()
  sha.file(file)
  puts("hush ->#{sha.hexdigest()}")
end

md5.rb

require "digest/md5"

$*.each do |file|
  md5 = Digest::MD5.new()
  md5.file(file)
  puts("hush -> #{md5.hexdigest()}")
end

実行できました。ベースが一緒だと楽でいいですね。

  • SHA2
    • 衝突性耐性が高い(ビット数が多い)
  • MD5
    • 衝突耐性に問題あり(ビット数が少ない)
    • unix標準

環境や条件によってMD5とSHAを使い分けるらしい。