ore*_*ren 6 c++ encryption openssl cryptography cryptoapi
哪个更好的使用openssl或windows capi进行ecnryption问题是什么是两者的pro和con列表.如果有可能在openssl上编写我的加密程序并使用windows capi解密它没有问题或者存在一些问题.
出于加密目的,我发现首先考虑密钥管理更容易.存储密钥的方式,密钥的创建方式,使用方式以及如何安全销毁密钥.根据我的经验,密钥管理是限制大多数应用程序结构的因素.
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坚持RSA公共指数小于32位 - 这是正常情况,但限制仍然是任意的,可能是令人讨厌的).那里有许多加密库; 除了OpenSSL和NSS之外,您可能想要研究Crypto ++,它非常成熟并且可以说是C++友好的.