【问题标题】:Porting Microsoft CryptoAPI to Mac OS将 Microsoft CryptoAPI 移植到 Mac OS
【发布时间】: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关键应用程序,加密/解密只是一个很小的,不是很重要的部分。
  • 没关系,重要的是安全。如果不了解自己在做什么,你就不会做对。

标签: macos cryptoapi


【解决方案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

如果您下载 CyaSSL,您还会找到一个 Visual Studio 项目文件来查看。

问候,
克里斯

【讨论】:

  • 谢谢克里斯。正如我在原始消息之外所写的那样,主要问题是以与 ::CryptDeriveKey 工作相同的方式实现 ::CryptDeriveKey 。由于原始方法较弱,密钥不会与加密文件一起存储。所以我需要重现生成密钥的过程(特别是 ::CryptDeriveKey 函数)。
猜你喜欢
  • 1970-01-01
  • 2014-05-04
  • 2013-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-14
  • 2011-10-26
  • 2015-08-20
相关资源
最近更新 更多