私は単純なWebアプリケーションを作成しており、ハッシュされたパスワードをデータベースに保存したいと考えています。認証トークンのハッシュ関数も必要です(ユーザー名と日付を連結してハッシュでトークンとしてクライアントに送信します)。MessageDigestでJavaのパスワードを解読することを理解する
私はMessageDigest Javaクラスがこれを手助けできることを発見しました。 Here is one link。 基本的な考え方は、このように書きます:
public String digestString (String stringToHash) throws NoSuchAlgorithmException {
MessageDigest sha256 = MessageDigest.getInstance("SHA-256");
byte[] stringBytes = stringToHash.getBytes();
byte[] stringDigest = sha256.digest(stringBytes);
return new String(stringDigest);
}
私は得ることはありませんどのようなものです:このコードで 、私はハッシュキーを設定することができますどのように?私は、同じ鍵が検証プロセスで使用されることを確認する必要があります。鍵を設定しないとどうすればいいですか?
BTW:ハッシュ化する前に、ハッシュされたテキストにソルト(この場合は256バイト)を追加する必要があります。
ハッシュ「キー」とはどういう意味ですか? HMACのようなものであれば、それは前のステップで行われなければならず、その出力からのバイトは 'MessageDigest'メソッドに渡されます。 MessageDigestは、内容に関係なくバイト配列をハッシュします。 – Peter
@Peter:実際には、javaはMacクラスを持ち、OracleプロバイダはHMACを実装しています。たとえば、 'Mac hmac = Mac.getInstance( 'HmacSHA1');'が動作します。 –