Форум: "WinAPI";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];
ВнизCryptoAPI (Delphi 2010, XP SP3) Найти похожие ветки
← →
tytus © (2010-07-06 12:36) [0]Добрый день мастера.
Вот решил разобраться с шифрованием файлов паролем.
с шифрованием все ок. А вот при дешифровке GetLastError выдает $00000057 - параметр задан неверно.var
hProv: HCRYPTPROV;
hash: HCRYPTHASH;
key: HCRYPTKEY;
FOrig: File;
Data: PByte;
d, dw: DWORD;
begin
//Шифрование
CryptAcquireContextW(@hProv, nil, nil, PROV_RSA_FULL,
CRYPT_VERIFYCONTEXT);
CryptCreateHash(hProv, CALG_SHA, 0, 0, @hash);
CryptHashData(hash, @aPassw[1], Length(aPassw), 0);
CryptDeriveKey(hProv, CALG_RC4, hash, 0, @key);
FTempStream := TMemoryStream.Create;
AssignFile(FOrig, FOrigFileName);
Reset(FOrig, 1);
GetMem(Data, 512);
try
while not EOF(FOrig) do
begin
BlockRead(FOrig, Data^, 512, d);
if CryptEncrypt(Key, 0, EOF(FOrig){false}, 0, data, @d, d) = true then
FTempStream.Write(data^, d);
end;
finally
FreeMem(Data, 512);
end;
CloseFile(FOrig);
FTempSTream.Seek(0, soFromBeginning);
RE1.Lines.LoadFromStream(FTempStream);
FTempStream.Free;
// Дешифрование
// все тоже самое, только
if CryptDecrypt(Key, 0, EOF(FOrig), 0, data, @d) = true then
FTempStream.WriteBuffer(data^, d);
Подскажите - как с этим бороться.
← →
tytus © (2010-07-06 13:36) [1]Дошло, блин..
Зашифрованые данные я выводил в MemoryStream а потом в TRichEdit, и сохранял RichEdit.Lines.SaveToFile(aFileName);
А нужно было сохранять - MemoryStream.SaveToFile(aFileName);
Теперь все нормально.
Возможно дело в отличии кодировок исходного файла и RichEdit.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2016.07.24;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c