MD5やらSHA-256でハッシュ化したい機会ってのはよくあると思うんですが、ググるとなんでかMessageDigestクラス使って長々と記述するサンプルが多く見かける気がします。 ラップしたクラスを作ってもいいんですが、せっかくだから俺はcommons-codec使うぜ!
gradleに追記
compile 'commons-codec:commons-codec:1.10'
コード
String hash = DigestUtils.sha256hex("abc");
うんうん短くてよきかなよきかな
Could not find method org.apache.commons.codec.binary.Hex.encodeHexString, referenced from method org.apache.commons.codec.digest.DigestUtils.sha256Hex
そんな気はしてた。 どうやらDigestUtilsが内部で使ってるHex.encodeHexStringが無いということらしい。どういうことなの。 試しに名前空間を変えて、org.apache.commons.codec.binary.Hexの中身をまるっとコピーして実行するとうまくいった。多分android SDK が内部的にcommons-codec使ってて、そっちにあるHexが呼ばれているっぽい。Google Playアプリのライセンスの中にもcommons-codecってあるし多分そういうことなのだろう。 とりあえず、encodeHexStringが使われないようにしてお茶を濁そう。
String hash = new String(Hex.encodeHex(DigestUtils.sha256("abc"));
敗北感ある・・・(´・ω:;.:...