069:メッセージのダイジェストを作成する

お題

文字列から16進数テキストのMD5ダイジェストを作成する

コード

//ref http://www.techscore.com/tech/Java/JavaSE/Utility/10-2/

import java.security.MessageDigest

java.security.MessageDigest.metaClass.hexDigest { target ->
    delegate.update(target.getBytes())
    def digest = delegate.digest()
    digestHex = ""
    digest.each{c ->
        tmp = sprintf("%02x", c & 0xff)
        digestHex +=tmp

    }
    return digestHex
}

def md = MessageDigest.getInstance("MD5")

def target = "abcdefghijklmn" * 1024
assert md.hexDigest(target) == "80fb5e0d7dd99e4891f7036c53818e37"

target = "abcdefghijklmn" * 1024 + "x"
assert md.hexDigest(target) == "a3008b9b09e13a35ec12f46568b40d0b"

結果はRubyと比較。

指摘

ありがとうございます。そうですね。直しました。



添削歓迎

ここ間違ってるよ
こうした方がGroovyらしくないか?
などなど
方法は、コメント、トラックバックはてブTwitter @orange_clover宛 で、お願いします。



実行環境




Groovyの詳細についてはJavadocと以下の書籍を参考にしている。




関谷 和愛、上原 潤二、須江 信洋、中野 靖治
価格: ¥ 3,360
価格は記載時点のものです。購入前にAmazonでご確認ください。

「プログラミングGROOVY」正誤表




問題自体は第2版のもの。
自分で考えるために他言語の例をGroovyで置き換えてる。
が、自分だけで書いてるとGroovyっぽくならいないのが玉にキズ。




青木 峰郎、後藤 裕蔵、高橋 征義、まつもと ゆきひろ

価格: ¥ 2,940
価格は記載時点のものです。購入前にAmazonでご確認ください。