2012-01-06 24 views
5

Tengo una serie de valores que se deben combinar en un hash SHA256 para pasar a un servicio web. Estos valores se combinan en una matriz de bytes usando Encoding.ASCII.GetBytes (allparametershere) y luego hash a SHA256 por myHashMethod.ComputeHash (allParameterByteArray). Como tengo que agregar este valor a un encabezado de solicitud, debe pasarse como una cadena al encabezado de solicitud.Cómo convertir una matriz de bytes hash C# a una cadena para pasarla a la API?

Los requisitos del sistema de terceros establecen que debe estar en formato hexadecimal de 64 caracteres de la cadena. He usado Convert.Base64String en el pasado, pero supongo que eso no es lo que están buscando, ya que solo recibo errores al pasar una cadena. ¿Algunas ideas?

Gracias!

Respuesta

10

Esto le dará el resultado en mayúscula hexagonal, cambie X a x para hacer pequeña caja.

Cambie SHA256Result para que sea su resultado de SHA256 Hash.

byte[] SHA256Result; 
StringBuilder stringBuilder = new StringBuilder(); 

foreach(byte b in SHA256Result) 
    stringBuilder.AppendFormat("{0:X2}", b); 

string hashString = stringBuilder.ToString(); 

La cadena resultante se hashString y debe tener una longitud 64, dejando al descubierto en cuenta SHA256Result es de 32 bytes.

+0

¿No debería usar un 'StringBuilder' y' AppendFormat() 'en su lugar? – Nuffin

+0

Sí, buen grito;) cambió – craig1231

+0

Gracias. Funcionó para mí Compara bien contra el resultado de 7-Zip. – FernandoZ

Cuestiones relacionadas