C# 不使用System.Security.Cryptography计算SHA256哈希
我要把我的一个图书馆搬到Xamarin PLC 官方文档声明支持System.Security.Cryptography命名空间,但实际代码中不支持该命名空间C# 不使用System.Security.Cryptography计算SHA256哈希,c#,hash,xamarin,cryptography,sha256,C#,Hash,Xamarin,Cryptography,Sha256,我要把我的一个图书馆搬到Xamarin PLC 官方文档声明支持System.Security.Cryptography命名空间,但实际代码中不支持该命名空间 我正在寻找一种不使用此名称空间(也不使用Windows名称空间中的HashAlgorithmProvider)计算SHA256哈希的方法。此方法破坏了Android和WP8.0的应用程序)使用Bouncy Castle PCL lib()测试类似的内容 Xamarin文档正确地说明了命名空间是完全受支持的 您无法使用它,仅仅是因为您正在编
我正在寻找一种不使用此名称空间(也不使用Windows名称空间中的HashAlgorithmProvider)计算SHA256哈希的方法。此方法破坏了Android和WP8.0的应用程序)使用Bouncy Castle PCL lib()测试类似的内容
Xamarin文档正确地说明了命名空间是完全受支持的 您无法使用它,仅仅是因为您正在编写一个PCL库,而Microsoft(好吧,您会感到惊讶)认为它不应该这样做 您可以在另一个答案中使用变通方法,因为Bouncy Castle完全被管理并且没有得到任何硬件提升,这会导致性能显著下降,或者完全放弃PCL方法
Microsoft即将推出.NET Core和.NET Platform Standard/.NET Standard库,这使您的库可以针对.NET平台标准,然后大部分PCL问题将消失。留意一下,你会喜欢的。哦!我没有看到他们有“便携式”图书馆!工作得很有魅力!非常感谢。就我的情况而言,这种表现可以忽略不计。该哈希在登录期间仅使用一次。
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);