У меня есть приложение для 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?