2013-01-11 3 views
5

berechnen Ich bin derzeit vor einem großen Problem (Umgebung: .NET 4.5 Core): Wir müssen eine Nachricht mit einem Schlüssel mit einem HMAC-SHA1-Algorithmus schützen. Das Problem ist, dass die HMACSHA1-Klasse des Namespace System.Security.Cryptography und der Namespace selbst nicht in .NET 4.5 Core existieren, dieser Namespace existiert nur in der normalen .NET-Version.Wie HMAC-SHA1 Authentifizierungscode in .NET 4.5 Core

Ich habe viele Möglichkeiten ausprobiert, um einen entsprechenden Namespace für unseren Zweck zu finden, aber das einzige, was ich fand, war Windows.Security.Cryptography, das leider keine HMAC-Verschlüsselung bietet.

Hat jemand eine Idee, wie ich unser Problem lösen könnte oder gibt es eine kostenlose Lösung von Drittanbietern?

+0

Zur Klarstellung, wenn Sie auf .NET verweisen 4.5 Kern, du meinst die win8 api Untermenge von .net 4.5, weshalb hast du keinen Zugriff auf System.Security.Cryptography? – jbtule

Antwort

9

Der Namespace Windows.Security.Cryptography enthält HMAC.

Sie erstellen ein MacAlgorithmProvider Objekt durch die statische OpenAlgorithm Methode aufrufen und Namen eines der folgenden Algorithmus festgelegt wird: 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

Vielen Dank für Ihre schnelle Antwort. Dies war hilfreich, ich konnte die CreateHMAC-Methode (beschrieben auf technet http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh802419.aspx) erfolgreich ausführen, aber was ich brauche, ist so etwas : HMAC_SHA1 ("Schlüssel", "Der schnelle braune Fuchs springt über den faulen Hund") = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 Weißt du, wie ich einen solchen Hash-Wert abrufen kann. Vielen Dank im Voraus – SwissPrime

+1

Ja, aktualisierte Antwort. – jbtule