メモ: Webアプリのパスワードを扱うためのハッシュ化
Webアプリケーションのログインに使うユーザパスワードは、安全のため、平文のままデータベースに保存してはいけません。保存するのは、ハッシュ化した値を利用します。保存したデータと、ユーザが入力した文字列をハッシュ化したものを突き合せて、認証を行います。
…というよくあることをJavaでしたいのですが、commons-codecとか、Jasyptとか、よのなか的には使うのでしょうか?(わからない。。。)
わからない場合は基本から、ということで、標準ライブラリを使うメモです。
import java.math.BigInteger; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class HashedPass { protected BigInteger stringToDigest(String str) throws NoSuchAlgorithmException { MessageDigest md = MessageDigest.getInstance("SHA-256"); byte[] bytes = str.getBytes(); md.update(bytes); return new BigInteger(md.digest()); } }
アルゴリズムは、「CRYPTREC | CRYPTREC暗号リスト(電子政府推奨暗号リスト)」を参考に、SHA-256を選択しています。
ちなみに、@ITさんの解説は、こんな感じです。
ついでに、勉強になりそうなサイトを発見。