【发布时间】:2012-10-28 21:47:30
【问题描述】:
我正在将 Windows Phone 7.1 应用程序迁移/转换/重建到 Windows 8 应用商店应用程序。
我在 de WP7 应用程序中使用的一种方法给我带来了麻烦:
private byte[] GetSHA256Key(string data, string secretKey)
{
byte[] value = Encoding.UTF8.GetBytes(data);
byte[] secretKeyBytes = Encoding.UTF8.GetBytes(secretKey);
HMACSHA256 hmacsha256 = new HMACSHA256(secretKeyBytes);
byte[] resultBytes = hmacsha256.ComputeHash(value);
return resultBytes;
}
查看 Windows 应用商店应用程序的文档,我想出了这个新代码,我希望它会给出相同的结果。但不是。我做错了什么。但是什么?
private byte[] GetSHA256Key(string value, string secretKey)
{
// Create a MacAlgorithmProvider object for the specified algorithm.
MacAlgorithmProvider objMacProv = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha256);
// Create a buffer that contains the message to be signed.
IBuffer valueBuffer = CryptographicBuffer.ConvertStringToBinary(value, BinaryStringEncoding.Utf8);
// Create a key to be signed with the message.
IBuffer buffKeyMaterial = CryptographicBuffer.ConvertStringToBinary(secretKey, BinaryStringEncoding.Utf8);
CryptographicKey cryptographicKey = objMacProv.CreateKey(buffKeyMaterial);
// Sign the key and message together.
IBuffer bufferProtected = CryptographicEngine.Sign(cryptographicKey, valueBuffer);
DataReader dataReader = DataReader.FromBuffer(bufferProtected);
byte[] bytes = new byte[bufferProtected.Length];
dataReader.ReadBytes(bytes);
return bytes;
}
我不是密码学专家。我不确定我在做什么。也许有人可以帮助我。
谢谢, JP
【问题讨论】:
-
“我在 de WP7 应用程序中使用的一种方法给我带来了麻烦”为什么?缺少方法/类?例外?详细信息将帮助您。
标签: c# windows-phone-7 cryptography microsoft-metro