我今天在WinRT中创建了一个简单的单向SHA-256哈希,并意识到它不起作用。我做了验证,显然得到了这个:
◦APISystem.Security.Cryptography.SHA256管理在MSCORLIB中, 此应用程序不支持PUBLICKEYTOKEN = B77A5C561934E089 类型。 CryptoWinRT.exe调用此API。 ◦API MSCORLIB中的System.Security.Cryptography.HashAlgorithm, 此应用程序不支持PUBLICKEYTOKEN = B77A5C561934E089 类型。 CryptoWinRT.exe调用此API。 ◦API System.Security.Cryptography.SHA256Managed。#ctor在MSCORLIB中, 此应用程序不支持PUBLICKEYTOKEN = B77A5C561934E089 类型。 CryptoWinRT.exe调用此API。 ◦API System.Security.Cryptography.HashAlgorithm.ComputeHash(System.Byte []) 在MSCORLIB中,PUBLICKEYTOKEN = B77A5C561934E089不支持 申请类型。 CryptoWinRT.exe调用此API。
这有什么替代品?为什么在WinRT中不允许这样一个微不足道的事情?
答案 0 :(得分:18)
这对你有用吗?
private void HandleHashClick(object sender, RoutedEventArgs e)
{
// get the text...
var inputText = this.textInput.Text;
// put the string in a buffer, UTF-8 encoded...
IBuffer input = CryptographicBuffer.ConvertStringToBinary(inputText,
BinaryStringEncoding.Utf8);
// hash it...
var hasher = HashAlgorithmProvider.OpenAlgorithm("SHA256");
IBuffer hashed = hasher.HashData(input);
// format it...
this.textBase64.Text = CryptographicBuffer.EncodeToBase64String(hashed);
this.textHex.Text = CryptographicBuffer.EncodeToHexString(hashed);
}