0

基本的に私の目的は、日付をソルト キーとして使用してパスワードを暗号化することです。これを行うためにSHA-512を使用していました。パスワードを暗号化するときは、今日の日付、たとえばjava.util.Date型である varDate を取得してから、暗号化を行います。こうやって出力するとvarDate.toString()、 が見えThu Jul 18 17:37:27 SGT 2013ます。その後、varDateDBに格納されます。

復号化するときは、パスワードを入力しvarDate、データベースからクエリを実行します。これもjava.util.Date型に含まれており、暗号化して比較を行います。興味深いことに、暗号化された値が一致しないため、これは常に失敗します。varDateDB からの を出力すると、この形式になっていることがわかりました2013-07-18 17:37:27.0

私はとても驚き、とても好奇心旺盛で、どうしてこうなったのだろうと苦労しました。これが暗号化に失敗した根本的な原因なのだろうか?

2013 年 7 月 23 日の更新

これは、ハッシュ アルゴリズムでコードがどのように機能するかを示すためのものです。パスワードを文字列として受け入れ、ソルトキーを文字列として受け入れる関数があり、次のようにパスワードのハッシュを行います。

   MessageDigest md = MessageDigest.getInstance("SHA-512");
   md.reset();
   md.update(saltKey.getBytes());
   md.digest(password.getBytes("UTF-8"));

私の実験では、Date オブジェクトを渡すと、一貫した結果が得られないことがわかりました。しかし、それを文字列に再フォーマットすると、一貫した結果が得られます。これは、日付オブジェクトが適切なソルト キー候補ではないように思えます。

4

2 に答える 2