| ||||
| ||||
Господа, помогите решить следующую задачу. Существует код на C# : RC2CryptoServiceProvider rc2 = new RC2CryptoServiceProvider(); ICryptoTransform ct = rc2.CreateDecryptor(str, vec); try { data = ct.TransformFinalBlock(data, 0, 8); } catch { ... } где str - массив из 16 байтов, vec-массив из 8 байтов, data - массив из 10 байтов. Необходимо написать эквивалент этого фрагмента кода на C++ (без managed extensions). Как я понимаю надо использовать CryptAPI примерно следующим образом : //--- Получить handle провайдера CryptAcquireContext(&hProv, NULL, NULL, PROV_RSA_FULL, 0); //--- Создать hash CryptCreateHash(hProv, CALG_MD5, 0, 0, &hHash); //--- Загрузить содержимое ключа в hash CryptHashData(hHash, str, 16, 0); //--- Создать ключ CryptDeriveKey(hProv, CALG_RC2, hHash, CRYPT_NO_SALT, &hKey); //--- Задать инициализирующий вектор CryptSetKeyParam(hKey, KP_IV, vec, 0); //--- Расшифровать dwCount = 8; CryptDecrypt(hKey, 0, TRUE, 0, (BYTE*)data, &dwCount); Не работает... Я новичок в данной области программирования, подскажите что в C++ коде неверно? Заранее спасибо. С уважением Михаил |