2012-04-05 13 views
5

Ich arbeite derzeit an einem Projekt, um ein Python 3.2-Programm in C# zu konvertieren.Was ist ein C# -Äquivalent von Hexdigest in Python 3.2?

Im Python-Programm gibt es eine Codezeile, die ein String-Objekt doppelter Länge zurückgibt, das nur hexadezimale Ziffern enthält.

Das Stück Code im Python-Programm ist:

if sha1.hexdigest().upper() == hash_string: 
    #do whatever 

Ich habe versucht, und andernfalls ein Äquivalent in C# von hexdigest vom hashlib in Python zu finden.

In C# Ich habe bereits den SHA1-Hash in einem Byte-Array, aber alle Methoden, die ich versucht habe, ein Äquivalent von Hexdigest auszuführen, haben keine Übereinstimmung mit dem Hash_string bereitgestellt - was ist der Hexdigest von sha1 sollte übereinstimmen.

Ich bin nicht sicher, ob das Problem die Methode ist, die ich benutze, um Hexdigest zu emulieren oder die Methode, die ich benutze, um den sha1-Hash überhaupt zu generieren - also wäre es brillant, wenn jemand eine Hexdigest-Methode hätte sie wissen, funktioniert als das würde mir erlauben, mindestens eine mögliche Ursache des Problems zu beseitigen.

Die Methode, die ich im Moment bin mit anstelle von hexdigest ist:

string hexaHash = ""; 
foreach (byte b in sha1result) 
{ 
    hexaHash += String.Format("{0:x2}", b); 
} 
string result = hexaHash; 

EDIT: facepalm okay, ich war gerade heraus, was mein Problem war. Bei der Generierung des Hashs sha1 im Python wurde eine hexadezimale Kleinschreibung verwendet. In meinem C# war es eine Hexadezimalkette. Also würde ich vermuten, dass das Hexdigest-Äquivalent, das ich verwende, in Ordnung ist. Tut mir leid, dass ich die Zeit verschwendet habe.

+1

Immer wenn vergleichen Strings, die von externen Systemen kommen sowohl in GROSSBUCHSTABEN sicherzustellen, da Fall schließlich im externen System und Code geändert werden könnte, werden fehlschlagen, so tun immer 'localValue.ToUpper() == externalValue.ToUpper () ' – sll

+1

Dup - http://stackoverflow.com/questions/3899644/convert-python-to-c-sharp –

Antwort

3

Verwenden Sie die HMACSHA1-Klasse, um es zu konvertieren.

+1

ein Code wäre schön ... schön bitte! – noelicus

2
var hmac = BitConverter.ToString(hashBytes).Replace("-", "").ToLower(); 
Verwandte Themen