5

私は現在大きな問題に直面しています(環境:.NET 4.5コア):HMAC-SHA1アルゴリズムを使用してキーでメッセージを保護する必要があります。問題は、名前空間のHMACSHA1クラスとSystem.Security.Cryptography名前空間自体が.NET 4.5 Coreに存在しないことです。この名前空間は、通常のバージョンの.NETにのみ存在します。

私は私たちの目的のために同等の名前空間を見つけるために多くの方法を試しましたが、私が見つけた唯一のことはWindows.Security.Cryptography悲しいことにHMAC暗号化を提供しないことでした。

誰かが私たちの問題をどのように解決できるか考えていますか、またはサードパーティのソリューションを無料で使用できますか?

4

1 に答える 1

9

名前Windows.Security.Cryptography空間にはHMACが含まれています。

MacAlgorithmProvider静的OpenAlgorithmメソッドを呼び出し、次のアルゴリズム名のいずれかを指定して、オブジェクトを作成します。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();

}
于 2013-01-11T13:43:10.317 に答える