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と以下の書籍を参考にしている。
問題自体は第2版のもの。
自分で考えるために他言語の例をGroovyで置き換えてる。
が、自分だけで書いてるとGroovyっぽくならいないのが玉にキズ。