2012-04-05 25 views
5

Actualmente estoy trabajando en un proyecto para convertir un programa Python 3.2 a C#.¿Qué es un equivalente de C# de hexdigest en Python 3.2?

En el programa python hay una línea de código que devuelve un objeto de cadena de doble longitud, que contiene solo dígitos hexadecimales.

El fragmento de código en el programa Python es:

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

He estado tratando y de no poder encontrar un equivalente en C# de hexdigest del hashlib en Python.

En C# Ya tengo el hash SHA1 en una matriz de bytes, pero todos los métodos que he intentado para llevar a cabo un equivalente de hexdigest no han proporcionado una coincidencia con hash_string, que es el hexdigest de sha1 debe coincidir.

No estoy seguro de si el problema es el método que estoy usando para emular hexdigest o el método que uso para generar el hash sha1 en primer lugar, así que sería genial si alguien tuviera un método hexdigest que ellos saber funciona como que me permitiría eliminar al menos una posible causa del problema.

El método que estoy usando en el momento en el lugar de hexdigest es:

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

EDIT: facepalm bien, sólo funcionó lo que mi problema. Al generar el hash sha1 en el pitón, lo hacía desde una cadena hexagonal en minúscula. En mi C# era una cadena hexagonal en mayúsculas. Así que supongo que el equivalente de hexdigest que estoy usando está bien como está. Perdón por perder el tiempo de la gente.

+1

Siempre cuando las cadenas comparar los cuales provienen de los sistemas externos aseguran tanto en mayúsculas, ya que caso se podría cambiar con el tiempo en el sistema externo y el código fallará, por lo que siempre hacen 'localValue.ToUpper() == externalValue.ToUpper () ' – sll

+1

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

Respuesta

3

Utilice la clase HMACSHA1 para convertirlo.

+1

algún código sería bueno ... ¡por favor! – noelicus

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