GroovyでMD5をやってみる
- Shibuya.trac第12回勉強会 〜チケット管理システム大決戦 第二弾〜
Ustで見てました。そしたら。
「総当りしろ」って言われたので。
JavaでMD5は java.security.MessageDigest を使うみたいです。で、書いてみた。
def getMD5(String value) { java.security.MessageDigest.getInstance('MD5').with{ new BigInteger(1, digest(value.bytes)).toString(16).padLeft(32,'0') } } (0..10000).find { 'f1d1d471045542b64f3fff665b42035a' == getMD5(it.toString()) }
…無いってさorz
4567 らしいけど、やらせてみたら 6562c5c1f33db6e05a082a88cddab5ea とか全然違うのになったー…。なんか根本的に間違ってるのかな…あ。
println getMD5('''4567 ''') f1d1d471045542b64f3fff665b42035a
改行かー!
それ1行で
groovy:000> (0..10000).find{value-> java.security.MessageDigest.getInstance('MD5').with{'f1d1d471045542b64f3fff665b42035a' == new BigInteger(1, digest((value.toString()+'\n').bytes)).toString(16).padLeft(32,'0')}} ===> 4567
「読みやすい1行」でないとなーと思うんです。訓練って事でひとつ…。