it-swarm.com.de

Wie kann man einen SHA-256-verschlüsselten String entschlüsseln?

Ich habe eine Zeichenfolge, die mit der folgenden Methode codiert wurde. Gibt es eine Möglichkeit, diese Zeichenfolge wieder auf ihren ursprünglichen Wert zu decodieren? Vielen Dank.

public synchronized String encode(String password)
        throws NoSuchAlgorithmException, IOException {

    String encodedPassword = null;
    byte[] salt = base64ToByte(saltChars);

    MessageDigest digest = MessageDigest.getInstance("SHA-256");
    digest.reset();
    digest.update(salt);

    byte[] btPass = digest.digest(password.getBytes("UTF-8"));
    for (int i = 0; i < ITERATION_COUNT; i++) {
        digest.reset();
        btPass = digest.digest(btPass);
    }

    encodedPassword = byteToBase64(btPass);     
    return encodedPassword;
}

private byte[] base64ToByte(String str) throws IOException {

    BASE64Decoder decoder = new BASE64Decoder();
    byte[] returnbyteArray = decoder.decodeBuffer(str);

    return returnbyteArray;
}

private String byteToBase64(byte[] bt) {

    BASE64Encoder endecoder = new BASE64Encoder();
    String returnString = endecoder.encode(bt);

    return returnString;
}
46
chiappone

SHA-256 ist eine kryptografische (Einweg-) Hash-Funktion , daher gibt es keine direkte Möglichkeit, sie zu dekodieren. Der gesamte Zweck einer kryptografischen Hash-Funktion besteht darin, dass Sie sie nicht rückgängig machen können.

Eine Sache, die Sie tun können, ist eine Brute-Force-Strategie , bei der Sie raten, was gehasht wurde, und es dann mit derselben Funktion hacken und prüfen, ob es passt. Es kann jedoch eine lange Zeit dauern, es sei denn, die gehashten Daten sind sehr einfach zu erraten.

Die Frage " nterschied zwischen dem Hashing und dem Verschlüsseln eines Passworts " könnte Sie interessieren.

118
Brendan Long

Es ist zu beachten, dass Sha256 die Daten/den Inhalt Ihrer Zeichenfolge nicht verschlüsselt, sondern stattdessen einen Hash mit fester Größe generiert, wobei Ihre Eingabezeichenfolge als Ausgangswert verwendet wird.

Dies ist der Fall - ich könnte den Inhalt einer Enzyklopädie eingeben, die leicht 100 MB Text groß wäre, aber die resultierende Zeichenfolge wäre immer noch 256 Bit groß.

Es ist unmöglich für Sie, den Hash umzukehren, um diese 100 MB an Daten aus dem Hash mit fester Größe wiederherzustellen. Das Beste, was Sie tun können, ist, zu versuchen, die Startdaten, den Hash, zu erraten/zu berechnen und dann zu prüfen, ob der Hash mit dem Hash übereinstimmt Du versuchst zu brechen.

Wenn Sie den Hash umkehren könnten, hätten Sie die bisher größte Form der Komprimierung.

31
Baaleos

Sie haben das Richtige getan, indem Sie ein Salt alias SSHA verwendet haben.

SHA und SHA-2 (oder SHA-256) ohne Salz gelten NICHT mehr als sicher! Das Salzen eines SHA Hashs wird Salted SHA oder SSHA genannt.

Im Folgenden finden Sie ein einfaches Beispiel dafür, wie einfach es ist, SHA-1 zu enthacken. Dasselbe kann auch für SHA-2 ohne großen Aufwand durchgeführt werden.

Geben Sie ein Passwort in diese URL ein: http://www.xorbin.com/tools/sha1-hash-calculator Kopieren Sie den Hash in diese URL: http: //www.hashkiller .co.uk/sha1-decrypter.aspx

Hier ist eine Seite, die SHA-2 enthasht. Die Art und Weise, wie diese Seiten funktionieren, ist, dass jemand Ihr Passwort zuvor gehasht hat, andernfalls wird es nicht gefunden: md5hashing dot net/hashing/sha256

Hier ist eine Seite, die behauptet, komplette SHA-2-Tabellen zum Download für eine "Spende" zur Verfügung zu haben (ich habe es noch nicht ausprobiert): crackstation dot net/buy-crackstation-wordlist-password-cracking-dictionary.htm

Hier ist ein guter Artikel, der erklärt, warum Sie SSHA über SHA verwenden müssen: crackstation dot net/hashing-security.htm

3
Bernie Lenz

SHA * ist eine Hash-Funktion. Es wird eine Darstellung (Hash) der Originaldaten erstellt. Dieser Hash ist niemals dazu gedacht, die ursprünglichen Daten wiederherzustellen. Es ist also keine Verschlüsselung. Vielmehr kann dieselbe Hash-Funktion an zwei verschiedenen Stellen auf denselben Originaldaten verwendet werden, um festzustellen, ob derselbe Hash erzeugt wird. Diese Methode wird häufig für die Kennwortüberprüfung verwendet.

3
paiego