2011-04-14 14 views
5

Buscando una forma de hacer lo siguiente en C# desde una cadena.C# SHA-2 (512) hash codificado Base64

public static String sha512Hex(byte[] data)

Calcula el SHA-512 digerido y devuelve el valor como una cadena hexadecimal.

Parámetros: de datos - Datos de digerir Devuelve: SHA-512 digerir como una cadena hexadecimal

private static string GetSHA512(string text) 
    { 
     UnicodeEncoding UE = new UnicodeEncoding(); 
     byte[] hashValue; 
     byte[] message = UE.GetBytes(text); 
     SHA512Managed hashString = new SHA512Managed(); 
     string encodedData = Convert.ToBase64String(message); 
     string hex = ""; 
     hashValue = hashString.ComputeHash(UE.GetBytes(encodedData)); 
     foreach (byte x in hashValue) 
     { 
      hex += String.Format("{0:x2}", x); 
     } 
     return hex; 
    } 

Respuesta

13

Would System.Security.Cryptography.SHA512 sea lo que necesita?

var alg = SHA512.Create(); 
alg.ComputeHash(Encoding.UTF8.GetBytes("test")); 
BitConverter.ToString(alg.Hash).Dump(); 

Ejecutado en LINQPad produce:

EE-26-B0-DD-4A-F7-E7-49-AA-1A-8E-E3-C1-0A-E9-92- 3F-61-89-80-77-2E-47-3F-88-19-A5-D4-94-0E-0D-B2-7A-C1-85-F8-A0-E1-D5-F8-4F- 88-BC-88-7F-D6-7B-14-37-32-C3-04-CC-5F-A9-AD-8E-6F-57-F5-00-28-A8-FF

Para crear el método a partir de su pregunta:

public static string sha512Hex(byte[] data) 
{ 
    using (var alg = SHA512.Create()) 
    { 
     alg.ComputeHash(data); 
     return BitConverter.ToString(alg.Hash); 
    } 
} 
+0

no funcionó como esperaba. la documentación dice que necesito convertir una cadena en "SHA-2 (512) hash codificado en Base64" –

+0

FYI ... Agradezco la ayuda y no quise dejar pasar esta empresa para desordenar también su documentación. –

+0

Sí, está bien, no leí el título con cuidado, también debe mencionar la parte "-2" en su pregunta. No sé si hay una implementación SHA-2 de 512 bits en .NET, pero probablemente sí. –

9

Tengo esto para trabajar. Tomado de here y modificado un poco.

public static string CreateSHAHash(string Phrase) 
    { 
     SHA512Managed HashTool = new SHA512Managed(); 
     Byte[] PhraseAsByte = System.Text.Encoding.UTF8.GetBytes(string.Concat(Phrase)); 
     Byte[] EncryptedBytes = HashTool.ComputeHash(PhraseAsByte); 
     HashTool.Clear(); 
     return Convert.ToBase64String(EncryptedBytes); 
    } 
Cuestiones relacionadas