Sha 512

Foermchen82

Top Contributor
Hallo zusammen,

ich habe eine recht exotische Frage. Und zwar Habe ich zwei Umsetzungen von Passwortverschlüsselungen. Eine in Java und eine in C#.

Beide verwenden SHA-512 als Algorithmus. Jedoch liefern beide unterschiedliche Byte-Arrays zurück. Sollten die nicht gleich sein?
 

Foermchen82

Top Contributor
Ich verwende hier Standard-Mechanismen der jeweiligen Programmiersprache:

Java:
[Java]
private static void cryp(){
String word = "Hallo";

printBytes(word.getBytes());
try {
MessageDigest crypter = MessageDigest.getInstance("SHA-512");

byte[] wordCrypt = crypter.digest(word.getBytes());
printBytes(wordCrypt);
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

public static void printBytes(byte[] bytes){
for (int i = 0; i < bytes.length; i++)
{
System.out.println(bytes);
}
}
[/Java]

C#:
Code:
static void Main(string[] args)
        {
           printBytes(System.Text.ASCIIEncoding.ASCII.GetBytes("Hallo"));
           SHA512Managed lo_SHA = new SHA512Managed();
           lo_SHA.Initialize();
           byte[] Buffer = lo_SHA.ComputeHash(System.Text.ASCIIEncoding.ASCII.GetBytes("Hallo"));
           printBytes(Buffer);
         }

private static void printBytes(byte[] bytes)
        {
            for (int i = 0; i < bytes.Length; i++)
            {
                Console.WriteLine(bytes[i].ToString());
            }
        }
 

The_S

Top Contributor
Hab jetzt kein C-Compiler da, welche Ausgabe erzeugt denn das C-Programm? Mal davon abgesehen, dass du in C explizit die ASCII-Bytes anforderst, in Java aber "irgendwelche" Bytes in einem nicht näher definierten Format.
 

Foermchen82

Top Contributor
Die bytes selbst sind nicht das Problem. Hier kommt bei beiden das gleiche raus:

72
97
108
108
111

Aber die verschlüsselten Bytes sind anders:

Java:

45 14 74 66 -46 96 -62 64 114 -127 -105 83 34 -125 126 97 -63 54 42 59 24 -66 56 -73 30 -74 -12 -33 -45 -28 -7 -110 -39 100 -63 -70 -58 -18 -60 83 32 100 -10 -105 121 -74 1 75 55 112 -119 28 -10 12 116 -7 118 -27 117 -120 -90 -55 118 -55

C#
45 14 74 66 210 96 194 64 114 129 151 83 34 131 126 97 193 54 42 59 24 190 56 183 30 182 244 223 211 228 249 146 217 100 193 186 198 38 96 83 32 100 246 151 121 182 1 75 55 112 137 28 246 12 116 249 118 229 117 136 166 201 118 201


hier gibt es Unterschiede. Aber warum?
 

The_S

Top Contributor
Achso, sorry ... hab die ganze Zeit irgendwie C und nicht C# im Hinterkopf :D . Meinte natürlich C#. Und mit unsigned meinte ich auch nicht wirklich unsigned, sondern vielmehr "Da wird ein Datentyp oder eine Repräsentation verwendet, die die Bytes von 0 bis 255 und nicht von -128 bis 127 darstellt" ... sorry, war etwas konfus von mir.
 

Neue Themen


Oben