Muss HashCode umgeschlüsselt werden, wenn dieser auf die Reise geht?

24/10/2008 - 09:36 von Alberto Luca | Report spam
Hallo NewsGroup,

ich habe eine Methode, welche mir einen HashCode erzeugt.
SHA256 erzeugt 32-Bytes, welche ich in einen String übertrage (somit
String-Lànge 32).
Da dieser String div. Sonderzeichen, bzw. Steuerzeichen beinhaltet, würde
mir dieser String einige Probleme bereiten (z.B. beim Drucken).

Was muss ich bei diesem erzeugten HashCode (String) berücksichtigen, wenn
ich diesen weiterverarbeiten will?
- Speichern in Datenbank
- Übertragen in Web zu WebService
- Ausgabe auf Console / Bildschirm / Report

Muss der erzeugte Code behandelt werden (mittels Convert.ToBase64String)?

Coding:
HashAlgorithm sha = new SHA256Managed();
byte[] dataBytes = Encoding.UTF8.GetBytes(pstrIn);

byte[] dataHashed = sha.ComputeHash(dataBytes);
string lstrOut;
lstrOut = Encoding.ASCII.GetString(dataHashed);
Console.WriteLine("Encoding: " + lstrOut + "; Lànge: " +
lstrOut.Length); // Lànge: 32
lstrOut = Convert.ToBase64String(dataHashed);
Console.WriteLine("Convert: " + lstrOut + "; Lànge: " +
lstrOut.Length); // Lànge: 44 (fix oder abhàngig vom Inhalt?)

Besten Dank vorab!
Ciao, Alberto
 

Lesen sie die antworten

#1 Ulf Kadner
24/10/2008 - 11:19 | Warnen spam
Alberto Luca schrieb:
Hallo NewsGroup,



Hallo Newsreader!

ich habe eine Methode, welche mir einen HashCode erzeugt.
SHA256 erzeugt 32-Bytes, welche ich in einen String übertrage (somit
String-Lànge 32).
Da dieser String div. Sonderzeichen, bzw. Steuerzeichen beinhaltet,



Weil Du die Bytes einfach nach ASCCI konvertierst. :-)

Was muss ich bei diesem erzeugten HashCode (String) berücksichtigen,
wenn ich diesen weiterverarbeiten will?
- Speichern in Datenbank
- Übertragen in Web zu WebService
- Ausgabe auf Console / Bildschirm / Report

Muss der erzeugte Code behandelt werden (mittels Convert.ToBase64String)?



Ja z.B., allerdings ist das nicht konform zu dem wie ein Hashcode im
allgemeinen aussieht. Besser due Konvertierst alles in die
Hexadezimaldarstellung.

byte[] dataHashed = sha.ComputeHash(dataBytes);
string lstrOut;
lstrOut = Encoding.ASCII.GetString(dataHashed);



Das geht so garnicht. Du kannst nicht einfach Binàrdaten nach ASCII wandeln.

Console.WriteLine("Encoding: " + lstrOut + "; Lànge: " +
lstrOut.Length); // Lànge: 32
lstrOut = Convert.ToBase64String(dataHashed);



das wàre nur ein Notnagel. Lieber als Hex-String:

static string Bin2Hex(byte[] bin) {
StringBuilder sb = new StringBuilder(bin.Length * 2);
foreach(byte b in bin) {
sb.Append(b.ToString("x").PadLeft(2, '0'));
}
return sb.ToString();
}

MfG, Ulf

Ähnliche fragen