我需要计算一个字节数组的哈希值,用于可移植库。
我正在尝试找到一个与 System.Security.Cryptography.SHA256Managed 等效的算法,适用于我的可移植库,目标平台为 .NET 4.5 + win 8 + WP 8.0。
我试图使用 PclContrib,但是似乎无法将其安装到针对这些平台的库中。
是否有任何库提供哈希算法实现,可以在可移植库的上下文中引用?
谢谢
我需要计算一个字节数组的哈希值,用于可移植库。
我正在尝试找到一个与 System.Security.Cryptography.SHA256Managed 等效的算法,适用于我的可移植库,目标平台为 .NET 4.5 + win 8 + WP 8.0。
我试图使用 PclContrib,但是似乎无法将其安装到针对这些平台的库中。
是否有任何库提供哈希算法实现,可以在可移植库的上下文中引用?
谢谢
var data = System.Text.Encoding.UTF8.GetBytes("test");
Org.BouncyCastle.Crypto.Digests.Sha256Digest hash = new Org.BouncyCastle.Crypto.Digests.Sha256Digest();
hash.BlockUpdate(data, 0,data.Length);
byte[] result = new byte[hash.GetDigestSize()];
hash.DoFinal(result, 0);
更新: 我不再维护我的原始端口,强烈建议使用GitHub上可用的其中一个端口,例如:https://github.com/onovotny/BouncyCastle-PCL。 它还支持更多平台。
更新2: 截至今天,我更推荐使用PCLCrypto。该库由AArnott(最初帮助我支持Bouncy castle PCL)维护。 该库的主要优点是,通过NuGet诱饵和开关机制,它将使用本地加密API而不是管理的慢速且潜在不安全的实现。 支持的完整算法列表在此处。
更新3: 基于Net Standard的类库现在应该是大多数用例的答案。 当涉及Xamarin开发时,PCLCrypto似乎仍然是最佳选择。
HashAlgorithmProvider
。 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);
}
如果需要更多参考,请点击这里