我在.NET 4.5中有这个工作代码:
var sha256 = System.Security.Cryptography.SHA256.Create();
var message = new byte[] {1, 2, 3};
var s = new byte[32];
var m = sha256.ComputeHash(message);
sha256.TransformBlock(m, 0, m.Length, m, 0);
sha256.TransformFinalBlock(s, 0, s.Length);
var x = sha256.Hash; // x = {236, 196, 174, 128, 243....}
而我'm trying to replicate it in an universal Windows 10 App. However I cannot find TransformBlock / TransformFinalBlock functions on the SHA256-object in the new .NET libraries. I' ve已经添加了对版本4.0.0-beta-23409 of System.Security.Cryptography.Algorithms的依赖 . 而我得到的错误是:
错误CS1061:'SHA256'不包含'TransformBlock'的定义,并且没有可以找到接受类型'SHA256'的第一个参数的扩展方法'TransformBlock'(您是否缺少using指令或汇编引用?)错误CS1061 :'SHA256'不包含'TransformFinalBlock'的定义,并且没有扩展方法'TransformFinalBlock'接受类型'SHA256'的第一个参数(你是否缺少using指令或汇编引用?)错误CS1061:'SHA256 '不包含'Hash'的定义,并且没有扩展方法'Hash'可以找到接受类型'SHA256'的第一个参数(你是否缺少using指令或汇编引用?)
如何获得与.NET 4.5相同的结果?
1 回答
解决方案在另一个类IncrementalHash中找到 . 显然,微软想要分离HashAlgorithm的有状态(TransformBlock和TransformFinalBlock)和“无状态”(ComputeHash)部分,因为它们没有很好的隔离 .
无论如何,这里是如何在通用Windows 10应用程序中复制代码: