2013-01-11 18 views
5

Attualmente sto affrontando un grosso problema (Ambiente: .NET 4.5 Core): Abbiamo bisogno di proteggere un messaggio con una chiave usando un algoritmo HMAC-SHA1. Il problema è che la classe HMACSHA1 del namespace System.Security.Cryptography e il namespace stesso non esistono in .NET 4.5 Core, questo spazio dei nomi esiste solo nella versione normale di .NET.Come calcolare il codice di autenticazione HMAC-SHA1 in .NET 4.5 Core

Ho provato un sacco di modi per trovare uno spazio dei nomi equivalente per il nostro scopo, ma l'unica cosa che ho trovato è stata Windows.Security.Cryptography che purtroppo non offre una crittografia HMAC.

Qualcuno ha un'idea di come potrei risolvere il nostro problema o è disponibile una soluzione di terze parti?

+0

Per chiarimenti, quando si fa riferimento a .NET 4.5 core, si intende il sottoinsieme di win8 api di .net 4.5, motivo per cui non si ha accesso a System.Security.Cryptography? – jbtule

risposta

9

Lo spazio dei nomi Windows.Security.Cryptography contiene HMAC.

si crea un oggetto MacAlgorithmProvider chiamando il metodo statico OpenAlgorithm e specificando uno dei seguenti algoritmi nomi: HMAC_MD5 HMAC_SHA1 HMAC_SHA256 HMAC_SHA384 HMAC_SHA512 AES_CMAC

http://msdn.microsoft.com/en-us/library/windows/apps/windows.security.cryptography.core.macalgorithmprovider.aspx

public static byte[] HmacSha1Sign(byte[] keyBytes, string message){ 
    var messageBytes= Encoding.UTF8.GetBytes(message); 
    MacAlgorithmProvider objMacProv = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1"); 
    CryptographicKey hmacKey = objMacProv.CreateKey(keyBytes.AsBuffer()); 
    IBuffer buffHMAC = CryptographicEngine.Sign(hmacKey, messageBytes.AsBuffer()); 
    return buffHMAC.ToArray(); 

} 
+0

Grazie per la tua rapida risposta. Questo è stato utile Sono stato in grado di eseguire il metodo CreateHMAC (descritto su technet http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh802419.aspx) riuscito, ma quello di cui ho bisogno è qualcosa come questo : HMAC_SHA1 ("chiave", "La volpe marrone veloce salta sul cane pigro") = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 Sai come posso recuperare un valore di hash simile. Grazie in anticipo – SwissPrime

+1

Sì, risposta aggiornata. – jbtule