我正在移植一些使用增量SHA-1的代码:
SHA1 hasher = HashAlgoFactory.Create<SHA1>();
hasher.Initialize();
DiskIOCallback readCallback = null;
readCallback = delegate(bool successful) {
if (successful)
hasher.TransformBlock(hashBuffer, 0, count, hashBuffer, 0);
offset += count;
if (!successful || offset == endOffset)
{
object hash = null;
if (successful)
{
hasher.TransformFinalBlock(hashBuffer, 0, 0);
hash = hasher.Hash;
}
我正在寻找WinRT / Metro等效产品。我之前使用过hasher.HashData;是否有一些相对简单的方法可以从HashData中获取增量行为,或者是一些实现上述相同功能的替代方法(以WinRT / Metro方式)?我完全有可能错过一些明显的东西......
答案 0 :(得分:4)
您应该使用CryptographicHash class:
var hashProvider = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
var hasher = hashProvider.CreateHash();
您可以附加多个数据增量:
hasher.Append(bytesPart.AsBuffer());
完成后,您将检索哈希:
var hash = hasher.GetValueAndReset().ToArray();