Я пытаюсь использовать LockBox 3.7.0 для шифрования файлов, расшифрованных с помощью этой команды OpenSSL:
C: \ OpenSSL-Win64> openssl des-ede3 -d -a -in encoded_file . xml -out plain_file. xml -K 123456789012345678901234567890123456789012345678 -iv 0 -p
Вот моя попытка:
KeyBin:=TMemoryStream.Create;
Codec1 := TCodec.Create( nil);
// Codec1.OnSetIV := codecMainDemoSetIV;
CryptographicLibrary1 := TCryptographicLibrary.Create( nil);
Codec1.CryptoLibrary := CryptographicLibrary1;
Codec1.StreamCipherId := BlockCipher_ProgId;
Codec1.BlockCipherId := TripleDES_ProgId;
Codec1.ChainModeId := CBC_ProgId;
Codec1.Password := '123456789012345678901234567890123456789012345678';
Codec1.EncryptString(str, CipherText, TEncoding.UTF8);
plainText:=CipherText;
Codec1.Free;
CryptographicLibrary1.Free;
Но когда я пытаюсь расшифровать, я получил это сообщение:
предупреждение: iv не используется этим шифром соль = 2000000000000000 ключ = 123456789012345678901234567890123456789012345678 неправильный дешифрование 14672: ошибка: 0606506D: процедуры обработки цифрового конверта: EVP_DecryptFinal_ex: final: неправильный: окончательный: неправильный. \ evp_en c. c: 552:
Я искал ответ от автора (Шон Б. Дюркин) в stackoverflow, но ничего не нашел, я пытался установить IV на 0 (как определено в команде openSSL) но у меня все еще есть плохое зашифрованное сообщение.
Обновление 1:
В вики openSSL я обнаружил, что параметр -K был шестнадцатеричным массивом (источник: https://wiki.openssl.org/index.php/Enc). * 1 025 *
Я пытался с компонентом Delphi OpenSSL (https://github.com/lminuti/Delphi-OpenSSL), и он работал с использованием этого кода:
EncUtil := TEncUtil.Create;
EncUtil.UseBase64 := chkBase64.Checked;
keyBytes := [$12, $34, $56, $78, $90, $12, $34, $56, $78, $90, $12, $34, $56, $78, $90, $12, $34, $56, $78, $90, $12, $34, $56, $78];
iv := [0, 0, 0, 0, 0, 0, 0, 0];
EncUtil.Passphrase.Create(keyBytes, iv);
EncUtil.Cipher := 'DES-EDE3'; // cmbCipher.Text;
EncUtil.Encrypt(edtInputFileName.Text, edtOutputFileName.Text);
EncUtil.Free;
Обновление 2:
Я использовал неправильный режим цепочки, глядя на openSSL do c (https://www.openssl.org/docs/man1.0.2/man1/enc.html), des-ede3 для "Три ключа тройной DES EDE в режиме ECB", и я использовал CB C ...
Но у меня все еще есть проблема" неправильной конечной длины блока ".
Я действительно хочу использовать Lockbox, но даже если я заменю Свойство пароля в байтовом массиве не работает.