如何通过C#使用CryptoAPI?

时间:2011-07-07 13:31:01

标签: c# .net cryptography cryptoapi mscapi

有一组CryptoApi功能可与加密服务提供商(CSP)配合使用。

CPAcquireContext
CPCreateHash
CPDecrypt
CPDeriveKey
CPDestroyHash
CPDestroyKey
CPDuplicateHash
CPDuplicateKey
CPEncrypt
CPExportKey
CPGenKey
CPGenRandom
CPGetHashParam
CPGetKeyParam
CPGetProvParam
CPGetUserKey
CPHashData
CPHashSessionKey
CPImportKey
CPReleaseContext
CPSetHashParam
CPSetKeyParam
CPSetProvParam
CPSignHash
CPVerifySignature

是的,我知道有System.Cryptography命名空间。但我不需要他们的实现。

是否有任何现成的库为这些函数提供.NET包装器?

2 个答案:

答案 0 :(得分:3)

MSDN上有关于此主题的扩展文章:

Extending .NET Cryptography with CAPICOM and P/Invoke

关于使用.Net的CryptoAPI Certificate Stores的文章。

一些P / Invoke声明从this blog post解除,显示了它的p / Invoke定义:

  

[snip]代码示例对SO [/ snip]

来说太大了

答案 1 :(得分:1)

我认为最好的办法是使用P / Invoke将功能提取到C#应用程序中。 这是MSDN关于在C#中使用P / Invoke和CryptoAPI的一篇(旧)文章:

Extending .NET Cryptography with CAPICOM and P/Invoke

它适用于.Net 1.1,但概念仍然相同。