1

そのため、昔は Windows 8 では使用できない System.Security.Cryptography を使用していました。Windows 8 で見つかったのは windows.security でしたが、キーで Sha256 を使用する方法の例は見つかりませんでした。これは、System.Security.Cryptography で使用した古いコードです。

        string appID = "appid";
        string key = "password";
        var hmacsha256 = new HMACSHA256(Encoding.Default.GetBytes(key));
        hmacsha256.ComputeHash(Encoding.Default.GetBytes(appID));
        string k = "";
        foreach (byte test in hmacsha256.Hash)
        {
            k += test.ToString("X2");
        }
4

4 に答える 4

6

これが最終的な作業コードです

public static string ComputeSignature (string algorithmName, string content, string key, BinaryStringEncoding encoding = BinaryStringEncoding.Utf8)
{   
    var algorithmProvider = MacAlgorithmProvider.OpenAlgorithm(algorithmName);
    var contentBuffer = CryptographicBuffer.ConvertStringToBinary(content, encoding);
    var keyBuffer = CryptographicBuffer.ConvertStringToBinary(key, encoding);
    var signatureKey = algorithmProvider.CreateKey(keyBuffer);
    var signedBuffer = CryptographicEngine.Sign(signatureKey, contentBuffer);
    return CryptographicBuffer.EncodeToHexString(signedBuffer);
}
于 2013-02-16T21:58:55.723 に答える
1

のクラスを使用しWindows.Security.Cryptographyて、メッセージ認証コード(質問のキー付きハッシュ)を作成できます。これが例です。そのまま提供されるデモコードとして扱ってください。セキュリティに関連するすべてのコードの完全なセキュリティレビューを行います。

var clear = "foobarbaz";
var bytes = CryptographicBuffer.ConvertStringToBinary(clear, BinaryStringEncoding.Utf8);
var macProvider = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha256);
var rndKey = CryptographicBuffer.GenerateRandom(macProvider.MacLength);
var key = macProvider.CreateKey(rndKey);
var cypherMac = CryptographicEngine.Sign(key, bytes);
var asString = CryptographicBuffer.EncodeToBase64String(cypherMac);
于 2013-02-12T19:01:56.640 に答える
-1

これは私のために働く:

using Windows.Security.Cryptography;
using Windows.Security.Cryptography.Core;

string str = "your string";
string hash = CryptographicBuffer.EncodeToHexString(HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha256).HashData(CryptographicBuffer.ConvertStringToBinary(str, BinaryStringEncoding.Utf8)));
于 2015-01-08T20:24:25.693 に答える