我正在尝试将一些现有的 C++ 代码转换为 C#。我有一些代码在同一个 HCRYPTHASH
上调用 CryptHashData
3 次。文档说“可以多次调用此函数和 CryptHashSessionKey
来计算长数据流或不连续数据流的哈希值。”
这就是我想在 C# 中实现的目标。不幸的是,MD5.ComputeHash()
似乎无法在现有哈希上构建。
我是否遗漏了什么,是否有 C# API 可以实现这一点?
实例化哈希类的实例并使用TransformBlock
和 TransformFinalBlock
:
byte[] part1 = //...
byte[] part2 = //...
byte[] part3 = //...
var hash = new MD5CryptoServiceProvider();
hash.TransformBlock(part1, 0, part1.Length, null, 0);
hash.TransformBlock(part2, 0, part2.Length, null, 0);
hash.TransformFinalBlock(part3, 0, part3.Length);
byte[] res = hash.Hash;
我是一名优秀的程序员,十分优秀!