Shepot

Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Цитата: Уважаемые знатоки, подскажите пожалуйста, столкнулся с такой проблемой. Есть шифрованный RSA блок в 128 байт, есть расшифрованный текст (для проверки), есть ключ расшифровки. Нужно найти алгоритм, который расшифрует этот блок. Перепробовал уже кучу компонентов, но либо с ключем что то не так, либо не тот компонент выбираю. | А ты не заморачивайся со сторонними компонентами. На мой взгляд, тут проще один раз разобраться и напрямую использовать CryptoAPI. Там ничего сложного нет, все очень хорошо описано в MSDN. Нужно последовательно вызвать несколько функций: CryptAcquireContext, CryptImportKey, а затем CryptDecrypt. Есть также пример, программка расшифровывающая файл, прямо то что нужно. Она правда на Си, но думаю разобраться не составит труда. Чтобы самому не ломать голову над импортом функций, лично я применял JEDI API Library & Security Code Library. В общем, фрагмент процедуры, использующей CryptoAPI у меня выглядел примерно так: Код: implementation uses Classes, Windows, SysUtils, JwaWinType, JwaWinCrypt; .................. Procedure DecryptXXX; var Stream: TMemoryStream; hProv: HCRYPTPROV; hPubKey: HCRYPTKEY; .................................. begin Stream := TMemoryStream.Create; hProv := 0; hPubKey := 0; try // Инициализируем CryptoAPI if not CryptAcquireContext(hProv, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) then raise Exception.CreateFmt('CryptAcquireContext failed. Error: 0x%x', [GetLastError]); // Грузим ключ из файла Stream.LoadFromFile('public.key'); // Импортируем ключ для дальнейшего использования if not CryptImportKey(RSA, PByte(Stream.Memory), Stream.Size, 0, 0, hPubKey) then raise Exception.Create('Error CryptImportKey'); // тут должна быть дальнейшая работа с CryptDecrypt finally FreeAndNil(Stream); end; end; | удачи! | Всего записей: 113 | Зарегистр. 12-04-2006 | Отправлено: 12:23 09-11-2012 | Исправлено: Shepot, 12:35 09-11-2012 |
|