开发者

CryptHashData equivalent for C#?

I am trying to translate some existing C++ code开发者_如何转开发 to C#. I have some code which calls CryptHashData 3 times on the same HCRYPTHASH. The documentation says "This function and CryptHashSessionKey can be called multiple times to compute the hash of long or discontinuous data streams."

Which is what I want to achieve in C#. Unfortunately, MD5.ComputeHash() doesn't appear to have a way to build on the existing hash.

Am I missing something, is there a C# API that would achieve this?


Instantiate an instance of the hash class and use TransformBlock and 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;


The cryptography functions in C# are limited. It's better to import CryptoAPI in C#.

[DllImport("Advapi32.dll", SetLastError=true)]
public static extern Boolean CryptHashData (
    IntPtr hHash,
    Byte[] pbData,
    Int32 dwDataLen,
    Int32 dwFlags
);

Look at this and this for more.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜