我正在将我的一个库移到Xamarin PLC。
官方文档声明支持System.Security.Cryptography命名空间,但它不在实际代码中。
我正在寻找一种在没有此命名空间的情况下计算SHA256哈希的方法(并且在Windows命名空间中没有HashAlgorithmProvider。此方法会破坏Android和WP8.0的应用程序)
答案 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问题将消失。留意它,你会喜欢它。