Портирование Microsoft CryptoAPI на Mac OS - PullRequest
0 голосов
/ 27 января 2011

У меня есть приложение для Windows (используется Visual Studio), которое использует Microsoft CryptoAPI.Теперь необходимо разработать приложение для 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.Но использование библиотек для моих куколок не очевидно (особенно с учетом того, что я не знаком с API Sequrity / Crypting).Может ли кто-нибудь порекомендовать конкретную библиотеку шифрования?Может быть, есть примеры кода для моей задачи?

ДОПОЛНЕНИЕ:

Кажется, главная проблема в том, что мне нужен портативный аналог :: CryptDeriveKey, который совместим с версией Microsoft (т.е.генерирует тот же ключ).Кто-нибудь знает такой?Или алгоритм создания ключа с помощью :: CryptDeriveKey?

1 Ответ

1 голос
/ 28 января 2011

Я бы рекомендовал взглянуть на встроенную библиотеку SSL CyaSSL. Он поддерживает текущие стандарты вплоть до 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.

С уважением,
Chris

...