对于加密问题,使用openssl和windows capi哪个更好?两者的利弊列表是什么?如果有可能在openssl上编写我的加密程序,并用windows capi解密它,没有问题,或者有一些问题。
发布于 2010-03-12 21:26:05
出于加密的目的,我发现首先考虑密钥管理更容易一些。密钥存储在哪里、如何创建、由谁使用以及如何安全地销毁密钥。根据我的经验,密钥管理是制约应用程序结构的最大因素。
CryptoAPI提供了一个应用程序接口,通过在操作系统中注册的驱动程序( "CSP")访问存储在任意位置的密钥。在OpenSC的帮助下,OpenSSL可能会提供类似的功能,但是驱动程序应该支持PKCS#11应用编程接口。无论哪种方式,驱动程序都是由构建存储设备的人提供的某种DLL (假设密钥是在硬件设备中存储和使用的)。
如果您希望能够使用存储在硬件设备中的密钥(其中设备可以是智能卡、HSM、...如果你想让你的代码在非Windows系统(MacOS,Linux,Solaris...)上运行,那么你就必须通过CryptoAPI或者PKCS#11。CryptoAPI本质上是只在Windows上运行的,所以如果你想让你的代码在非Windows系统(MacOS,Linux,solaris...)上运行,就应该使用PKCS#11。如果你用PKCS#11的方式,你可能想尝试NSS而不是OpenSSL。NSS是在Netscape派生的浏览器(例如Firefox)中使用的库。它是开源的。
另一方面,如果您只针对Windows系统,那么CryptoAPI将简化分发,因为它已经存在,不需要额外的DLL。
如果您准备放弃硬件,并希望使用纯软件加密,而密钥保存在内存中,那么您可能不想使用CryptoAPI,因为它实现的算法数量和接受的变化都非常有限(例如,CryptoAPI坚持要求RSA指数小于32位--这是正常情况,但限制仍然是任意的,可能会令人讨厌)。现在有很多加密库;除了OpenSSL和NSS之外,您可能还想研究一下Crypto++,它非常成熟,应该是对C++友好的。
https://stackoverflow.com/questions/2431991
复制相似问题