Frage

Ich versuche, den folgenden Java -Code in C# zu duplizieren, aber ich glaube nicht, dass ich es richtig mache O_O

(Der Code wird von entnommen ftp://ftp.arlut.utexas.edu/pub/java_hashes/sha512crypt.java)

Java -Variablen:

CTX, Alt_ctx = MessagedIGest

Key = String (das Passwort zu Hash)

salz = Schnur (Salz zum Hash hinzuzufügen)

        /*                  ---JAVA---                    //
        ////////////////////////////////////////////////////
        ctx.reset();

        ctx.update(key, 0, key.length);
        ctx.update(salt, 0, salt.length);

        alt_ctx.reset();
        alt_ctx.update(key, 0, key.length);
        alt_ctx.update(salt, 0, salt.length);
        alt_ctx.update(key, 0, key.length);

        alt_result = alt_ctx.Digest();
        //////////////////////////////////////////////////*/

C# Variablen:

CTX, ALT_CTX = Hashalgorithmus (SHA512Managed)

Schlüssel und Salz sind gleich wie in Java ...

 //                       --- C# EQUIV ? ---                    //
        int TESTINGINT;
        ctx = null;
        ctx = new SHA512Managed();
        ctx.TransformBlock(key, 0, key.Length, key, 0);
        ctx.TransformBlock(salt, 0, salt.Length, salt, 0);

        alt_ctx = null;
        alt_ctx = new SHA512Managed();

        alt_ctx.TransformBlock(key, 0, key.Length, key, 0);
        alt_ctx.TransformBlock(salt, 0, salt.Length, salt, 0);
        alt_ctx.TransformBlock(key, 0, key.Length, key, 0);

        alt_result = alt_ctx.TransformFinalBlock(key, 0, key.Length); //most likely wrong here

        //?????????????????????????????????????????????????????????//

Wie ich bereits sagte, ist sich ziemlich sicher, dass dies falsch ist ... Ich frage mich, ob jemand die genaue Übersetzung kennt.

Ich habe mich auch angesehen http://www.obviex.com/samples/hash.aspx für etwas Hilfe. Dies gibt mir jedoch nicht die gleiche Ausgabe und hat keine # Runden zu tun.

Angesichts des Wortes "Beta" versuche ich letztendlich Folgendes zu replizieren (eine Zeile)

$ 6 $ Runden = 60000 $ Ziftw/dnucd/k $ o57stkywurpqcgpnidklshfcvr7.vgzfmhvwn7mg8Trgjswadchhs6s5onybnsbwhehehehehehehehhehehhehehhehehh66a4i/yra4y/y1/y1/y1/y11/y11/y1/y11bnsbwhehehehehehehhehehheheheh.

Danke für Ihre Hilfe

War es hilfreich?

Lösung

Nachdem ich ein paar gründliche Tests durchgeführt habe, habe ich mein C# auf das Folgende festgelegt, was das Äquivalent zu sein scheint ...

ctx = new SHA512Managed();

byte[] digestA = new byte[key.Length + salt.Length];

ctx.TransformBlock(key, 0, key.Length, digestA, 0);
ctx.TransformBlock(salt, 0, salt.Length, digestA, key.Length);

byte[] digestB = new byte[key.Length * 2 + salt.Length];

ctx.TransformBlock(key, 0, key.Length, digestB, 0);
ctx.TransformBlock(salt, 0, salt.Length, digestB, key.Length);
ctx.TransformBlock(key, 0, key.Length, digestB, key.Length + salt.Length);

alt_ctx = new SHA512Managed();

alt_result = alt_ctx.ComputeHash(digestB);  
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top