0

我有一个使用 Microsoft CryptoAPI 的 Windows 应用程序(使用 Visual Studio)。现在需要开发一个Mac OS X 应用程序,它能够读取数据,由WinApp 加密,并在Mac OS X 上加密数据,由WinApp 解密。WinApp中的加密/解密以这样的方式初始化:

::CryptAcquireContext(&m_hCryptProv, NULL, MS_DEF_PROV, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
::CryptCreateHash(m_hCryptProv, CALG_MD5, 0, 0, &m_hCryptHash);
::CryptHashData(m_hCryptHash, pbtPSW, dwPSWLen, 0);
::CryptDeriveKey(m_hCryptProv, CALG_RC4, m_hCryptHash, 0, &m_hCryptKey);

对于加密/解密,使用以下内容:

::CryptEncrypt(m_hCryptKey, 0, TRUE, 0, pBuf, &dwCnt, dwLen);
::CryptDecrypt(m_hCryptKey, 0, TRUE, 0, pBuf, &dwCnt);

据我了解,我需要找到一个实现 MD5 散列加 RC4 编码/解码的库。似乎有许多这样的库。例如:matrixSSL、OpenSSL。但是为我的目的使用这些库并不明显(特别是考虑到我不熟悉 Sequrity/Crypting API)。有人可以推荐一个特定的加密库吗?我的任务可能有代码示例吗?

添加:

似乎主要问题是我需要一个可移植的 ::CryptDeriveKey 模拟,它与 Microsoft 版本兼容(即生成相同的密钥)。有人知道这样的吗?还是通过 ::CryptDeriveKey 创建密钥的算法?

4

1 回答 1

1

我建议看一下 CyaSSL 嵌入式 SSL 库。它支持高达 TLS 1.2 的当前标准,并且在操作系统之间非常便携。特别是,CyaSSL 包括 CTaoCrypt 加密库,它可以让您执行您正在寻找的加密操作。

CyaSSL 的一些有用的文档链接:

CTaoCrypt 使用参考:http://yassl.com/yaSSL/Docs_CTaoCrypt_Usage_Reference.html CyaSSL
文档页面:http : //yassl.com/yaSSL/Docs.html

If you download CyaSSL, you'll find a Visual Studio project file to take a look at as well.

Regards,
Chris

于 2011-01-28T17:51:02.333 回答