我有一个使用 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 创建密钥的算法?