2011-01-27 89 views
0

我有一個使用 Microsoft CryptoAPI的Windows應用程序(使用Visual Studio)。現在需要開發一個Mac OS X 應用程序,該應用程序能夠讀取由WinApp加密的數據,並在Mac OS X上加密將由WinApp解密的數據。在WinApp 加密/能解密在這樣的方式初始化:將Microsoft CryptoAPI移植到Mac OS

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

據我瞭解,我需要找到一個實現MD5庫:

::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); 

而且加密/能解密使用以下 散列加RC4編碼/解碼。看起來有這樣的庫的數量是 。例如:matrixSSL,OpenSSL。但 使用我的puproses庫並不明顯(特別是 考慮到,我不熟悉Sequrity/Crypting API)。有人可以推薦一個特定的加密庫嗎? May 有沒有我的任務的代碼示例?

此外:

看來主要問題是,我需要:: CryptDeriveKey的便攜式模擬,與Microsoft兼容的版本(即產生相同的密鑰)。有人知道這樣的嗎?還是一種由:: CryptDeriveKey創建密鑰的算法?

+0

嗯,你要加密端口相關的代碼,甚至沒有認識的來源做什麼。從安全角度來看沒什麼意義... – 2011-01-27 13:13:06

+0

尤金,我想要做的 - 用便攜式庫中的模擬代替原來的CryptoAPI功能。而且這個工作儘可能地短,這是可取的。這不是一個關鍵的應用程序,加密/解密只是一個小而不是非常重要的部分。 – VitalyVal 2011-01-27 13:51:11

回答

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項目文件採取看看也是如此。

問候,
克里斯