Ist der Hash-Mechanismus wirklich sicher?

Nun, ich habe immer Leute gesehen (und verfolgt), die gesagt haben, dass sie Hashing-Mechanismen zum Speichern von Passwörtern in Datenbanken verwenden sollen. Ich bin wirklich besorgt, ist es sicher?

Lass uns mit Beispiel gehen.

Angenommen, ich bin Hacker und habe Ihren Datenbanknamen, Ihre ID und Ihr Kennwort erhalten. Jetzt habe ich vollen Zugriff auf Ihre Datenbank.

Was die Leute sagen, Passwörter sollten gehasht werden, denn wenn jemand hackt, sind sie für Hacker sichtbar.

Wenn ich also query as starteselect id, password FROM userDetails Ich werde Daten wie unten erhalten

Option 1: Ohne Hash
++++++++++++++++++++++++++++
+   id    +    password    +
++++++++++++++++++++++++++++
+  id01    +  password01   +
+  id02    +  password02   +
++++++++++++++++++++++++++++
Option 2: Mit Hash
++++++++++++++++++++++++++++
+   id    +    password    +
++++++++++++++++++++++++++++
+  id01    +  hasValue01   +
+  id02    +  hasValue02   +
++++++++++++++++++++++++++++

Nun, ich sage immer noch, Hashing ist unsicher. Warum werde ich Ihnen im Folgenden mit Java-Code erzählen.

PreparedStatement pst = conn.prepareStatement("SELECT id, password FROM userDetails");
ResultSet rs = pst.executeQuery();
String randomPassword = "";
StringBuffer sb;
boolean myPassCheck = true;
while (rs.next()) {
    myPassCheck = true;
    while (myPassCheck) {
        // this will generate random password
        randomPassword = generateRandomPassword();
        MessageDigest md = MessageDigest.getInstance("MD5");
        byte[] array = md.digest(randomPassword.getBytes());
        sb = new StringBuffer();
        for (int i = 0; i < array.length; ++i) {
            sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).substring(1, 3));
        }
        if (sb.toString().equals(rs.getString(2))) {
            // this is password
            myPassCheck = false;
            System.out.print("id=" + rs.getString(1) + ", password=" + sb.toString());
        }
    }
}

Auf diese Weise kann ich den Benutzernamen und das Passwort ausdrucken. (Ich weiß, dass ich ein zufälliges Passwort generieren muss, bis ich das Passwort nicht gefunden habe). Auf diese Weise schlägt jedoch auch der Hashing-Kennwortmechanismus fehl.

Ich glaube auch, dass es auf dieser Welt einen Entschlüsseler gibt, der die Hash-Daten in tatsächliche Daten umwandelt.

Daher denke ich

Ist der Hashing-Mechanismus sicher?Bearbeiten 1

Ich spreche nicht nur über MD5. Ich wähle zum Beispiel NUR MD5. Ich spreche über einen Mechanismus für ein sicheres Passwort

Antworten auf die Frage(4)

Ihre Antwort auf die Frage