md5sumの計算
30分プログラム、その750。md5sumの計算をやってみました。
java.security.MessageDigestを使えば楽に計算できます。
ただ、InputStreamのreadにwhileを使っているのがイケてない気がしてます。InputStreamをSeq[Byte]に変換できたらクールなのになぁ。
使い方
$ scala Md5sum md5sum.scala a4d430e5775936a87538f3260b32baef # 参考 $ md5sum md5sum.scala a4d430e5775936a87538f3260b32baef md5sum.scala
ソースコード
import java.security.MessageDigest import java.io._ object Md5sum { def md5sum(input : InputStream) = { val digest = MessageDigest.getInstance("md5") var byte = input.read() while(byte != -1) { digest.update( byte.toByte ) byte = input.read() } digest.digest() } def hexdigest(xs : Seq[Byte]) = xs.map((n : Byte) => "%02x".format(n & 0xff)).mkString def main(args: Array[String]) { for(arg <- args) println(hexdigest(md5sum(new FileInputStream(arg)))) } }