【发布时间】:2015-11-10 08:34:50
【问题描述】:
我有一个 Windows 应用程序(使用 Visual Studio),它使用 微软加密 API。现在需要开发一个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 蜜蜂)。有人可以推荐一个特定的加密库吗?可能 我的任务有代码示例吗?
补充:
似乎主要问题是我需要一个可移植的 ::CryptDeriveKey 模拟,它与 Microsoft 版本兼容(即生成相同的密钥)。有人知道这样的吗?还是通过 ::CryptDeriveKey 创建密钥的算法?
【问题讨论】:
-
嗯,您将在不了解源代码的情况下移植与密码学相关的代码。从安全的角度来看没有多大意义......
-
Eugene,我想做的 - 用可移植库中的类似物替换原始 CryptoAPI 函数。并且希望这项工作花费尽可能少的时间。这不是一个sequrity关键应用程序,加密/解密只是一个很小的,不是很重要的部分。
-
没关系,重要的是安全。如果不了解自己在做什么,你就不会做对。