2010-03-12 94 views
6

哪个更适合使用openssl或windows capi来解决ecnryption问题什么是pro和con列表都适用。 ,如果有可能在openssl上编写我的加密程序,并用windows capi解密,没有问题,或者有问题。openssl vs windows capi

回答

9

为了加密的目的,我觉得首先考虑密钥管理更容易。如何存储密钥,如何创建密钥,谁使用密钥以及如何安全销毁密钥。根据我的经验,密钥管理是最多限制应用程序结构的因素。

CryptoAPI提供了一个API来访问通过在操作系统中注册的驱动程序(“CSP”)存储在任意位置的密钥。 OpenSSL可以在OpenSC的帮助下提供类似的功能,但驱动程序应支持PKCS#11 API。无论哪种方式,驱动程序都是由构建存储设备的人员提供的某种DLL(假设该密钥已存储并在硬件设备中使用)。

如果您希望能够使用存储在硬件设备中的密钥(设备可能是智能卡,HSM,任何可以执行某些加密但将拒绝给密钥本身的密钥),那么您将必须通过CryptoAPI或PKCS#11。 CryptoAPI本质上仅限于Windows,所以如果您希望您的代码可能在非Windows系统(MacOS,Linux,Solaris ...)上运行,那么PKCS#11就是您的选择。如果你使用PKCS#11,你可能想尝试NSS而不是OpenSSL。 NSS是Netscape派生浏览器(例如Firefox)中使用的库。它是开源的。另一方面,如果您只针对Windows系统,那么CryptoAPI会简化分发,因为它已经存在,不需要额外的DLL。如果你已经准备好放弃硬件,并且想要使用纯软件加密技术,并且把密钥保存在RAM中,那么你可能不想使用CryptoAPI,而CryptoAPI在它所实现的算法数量和(例如CryptoAPI坚持RSA公开指数小于32位 - 这是正常情况,但限制仍然是任意的并且可能令人厌烦)。那里有许多密码库;除了OpenSSL和NSS之外,您可能需要调查Crypto++,这是相当成熟的,并且被认为是对C++友好的。

+1

[我一直在努力](http://stackoverflow.com/q/43802185/267874)使Windows上的OpenSSL与HSM一起工作数周,现在我必须说,你的一个简单的答案在这里清除了整个照片给我!你我的朋友,真的知道如何提供清晰和相关的信息。谢谢!现在我走了,尝试PKCS#11的方式,现在可能是跨平台的! – 2017-05-05 12:28:25