私はセキュリティ専門家ではなく、多くのアイデアをローカルのイントラネット上で実行しているので、あまり考えていないので、 はセキュリティを気にしていますか? :)MD5ハッシュを比較することに関して
しかし、実際には、私はそれを正しくしようとしています。
glassfishにJDBC領域を設定しました。インターネットからこのコードを使用してMD5ハッシュを使用してパスワードを保存しています。ハッシュは、入力されたパスワード は、以下のコードのように私のDBにあるものと同じであるかどうかを検証することが等しい場合
public static String getMD5(String input)
{
try
{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(input.getBytes());
byte byteData[] = md.digest();
//convert the byte to hex format method 1
StringBuffer sb = new StringBuffer();
for (int i = 0; i < byteData.length; i++)
{
sb.append(Integer.toString((byteData[i] & 0xff) + 0x100,
16).substring(1));
}
return sb.toString();
}
catch (NoSuchAlgorithmException e)
{
throw new RuntimeException(e);
}
}
今、私の質問はそれだけで比較している...パスワード変更のユースケースの間に、ありますか?
public static void main(String[] args)
throws NoSuchAlgorithmException
{
String currentPassword = "java";
String inputValue = "java1";
String string1 = getMD5(currentPassword);
String string2 = getMD5(inputValue);
System.out.println("Is equal = " + string1.equals(string2));
}
私は、MD5はそう、私は文字列にパスワードを戻って復号化することはできませんハッシング一つの方法であることをどこかで読んだことがありますか?
申し訳ありませんが、私の質問が単純すぎる場合は私の理解を確認したいと思いますか?
おかげ
パスワードファイルが危険にさらされてもよいが、塩はばかばかしいではありませんという考え。塩のポイントは、事前計算された攻撃を防ぐことです。個々のランダムな塩がなければ、敵対者は各パスワードを個別に攻撃する必要があります。塩がなければ、パスワードは虹のテーブル(パスワードが計算された形式であると仮定して)で簡単に解読することができます。この回答のように、シードが一定であれば、ソフトウェアを使用するすべてのパスワードを一度に攻撃することができます。そして、妥協の後、ソフトウェアを修正して再構築する必要があります(あなたは危機でそれを確実にしたいと思っていますか?)。 –
パスワードと一緒にランダムな塩を格納するために、上記の実装を変更する必要があることに同意します。しかし、私は、入力にもう1つのランダム性があるというもう1つの入力を持っていると、セキュリティの別の障壁が加わると思います。データベースがWebサーバーなしで侵害されたり、DBの内容を公開するSQLインジェクションのバグが存在する可能性はありますか?この特定の場合、この追加の秘密情報の追加は、攻撃者がウェブインスタンスをデータベース内のあらかじめコンパイルされた値に妥協しなければならないことを意味します。 –
Davidさん、ありがとうございました! –