使用System.Security.Cryptography计算SHA256哈希值

时间:2016-04-07 00:52:41

标签: c# hash xamarin cryptography sha256

我正在将我的一个库移到Xamarin PLC。

官方文档声明支持System.Security.Cryptography命名空间,但它不在实际代码中。

我正在寻找一种在没有此命名空间的情况下计算SHA256哈希的方法(并且在Windows命名空间中没有HashAlgorithmProvider。此方法会破坏Android和WP8.0的应用程序)

2 个答案:

答案 0 :(得分:5)

使用Bouncy Castle PCL lib(https://www.nuget.org/packages/Portable.BouncyCastle/

测试类似的东西
var encData = Encoding.UTF8.GetBytes("TESTHASH");
Org.BouncyCastle.Crypto.Digests.Sha256Digest myHash = new Org.BouncyCastle.Crypto.Digests.Sha256Digest();
myHash.BlockUpdate (encData, 0, encData.Length);
byte[] compArr = new byte[myHash.GetDigestSize ()];
myHash.DoFinal (compArr, 0);

答案 1 :(得分:1)

Xamarin文档是完全支持命名空间的。

你无法使用它,只是因为你正在编写一个PCL库,其中微软(你发现它令人惊讶)不相信它应该是。

您可以在另一个答案中使用解决方法,因为Bouncy Castle已完全管理并且没有获得任何硬件提升或完全放弃PCL方法,因此性能显着下降。

Microsoft已推出.NET Core和.NET Platform Standard / .NET标准库,它允许您的库以.NET平台标准为目标,然后大多数PCL问题将消失。留意它,你会喜欢它。