Как рассчитать код аутентификации HMAC-SHA1 в .NET 4.5 Core

В настоящее время я столкнулся с большой проблемой (среда: .NET 4.5 Core): нам нужно защитить сообщение с помощью ключа с использованием алгоритма HMAC-SHA1. Проблема в том, что класс HMACSHA1 пространства имен System.Security.Cryptography и само пространство имен не существуют в .NET 4.5 Core, это пространство имен существует только в обычной версии .NET.

Я пробовал много способов найти эквивалентное пространство имен для нашей цели, но единственное, что я нашел, было Windows.Security.Cryptography, которое, к сожалению, не предлагает шифрование HMAC.

Есть ли у кого-нибудь идеи, как я могу решить нашу проблему, или есть ли какое-либо бесплатное стороннее решение?


person SwissPrime    schedule 11.01.2013    source источник
comment
Для пояснения: когда вы ссылаетесь на ядро ​​.net 4.5, вы имеете в виду подмножество API win8 .net 4.5, поэтому у вас нет доступа к System.Security.Cryptography?   -  person jbtule    schedule 11.01.2013


Ответы (1)


Пространство имен 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();

}
person jbtule    schedule 11.01.2013
comment
Спасибо за ваш быстрый ответ. Это было полезно, я смог запустить метод CreateHMAC (описанный в technet msdn.microsoft.com/en-us/library/windows/apps/xaml/) успешно, но мне нужно что-то вроде этого: HMAC_SHA1 (ключ, быстрая коричневая лиса перепрыгивает через ленивую собаку) = 0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9 Знаете ли вы, как я могу получить такое хеш-значение. заранее спасибо - person SwissPrime; 11.01.2013