Delphi 10 AES 128 ECB калькулятор ошибка

Я использую TurboPower Lockbox 3. Это не дает правильный результат, где я могу сделать ошибки?

Я делаю правильный расчет на этом сайте.

Aes калькулятор

Я вычисляю питона и получаю правильный результат.

правильный результат.

'E6861877DB7B021E8B755F927243ED7B'

Есть разные результаты, когда я вычисляю это как delphi.

function EncryptText_AES_128(input: string; password: string): ansistring;
var
  Codec: TCodec;
  CipherText: String;
begin
  Codec := TCodec.Create(nil);
  try
    Codec.CryptoLibrary := TCryptographicLibrary.Create(Codec);
    //
    Codec.StreamCipherId := BlockCipher_ProgID;
    Codec.BlockCipherId := Format(AES_ProgId, [128]);
    Codec.ChainModeId := ecb_ProgId;
    //
    Codec.Password := Password;
    Codec.EncryptString(input, CipherText,tencoding.UTF8);
    //
    Result := (CipherText);
  finally
    Codec.Free;
  end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
memo1.Lines.Add( EncryptText_AES_128(#$00#$01#$02#$03#$04#$05#$06#$07#$08#$09#$0a#$0b#$0c#$0d#$0e#$0f,#$78#$34#$90#$fd#$6a#$6c#$90#$f0#$72#$36#$a8#$ed#$40#$27#$94#$f8#$73#$2c#$96#$fb#$71#$1f#$a0#$f4#$6c#$34#$9a#$c4#$79#$24#$93#$e8));
end;

где я делаю ошибки?

1 ответ

Я уже говорил вам в вашем старом вопросе AES 128 ECB Delphi, что #$78#$34#$90#$fd#$6a#$6c#$90#$f0#$72#$36#$a8#$ed#$40#$27#$94#$f8#$73#$2c#$96#$fb#$71#$1f#$a0#$f4#$6c#$34#$9a#$c4#$79#$24#$93#$e8 нет 128-битного ключа.

Я могу воспроизвести вывод вашего онлайн-калькулятора с моей собственной программой, если я использую AES-256-ECB. Здесь полная программа и вывод

uses
  aes_type, aes_ECB, mem_util;
var
  Context: TAESContext;
  ct: array[0..50] of byte;
const
  pt: array[0..15] of byte = ($00,$01,$02,$03,$04,$05,$06,$07,
                              $08, $09,$0a,$0b,$0c,$0d,$0e,$0f);
const
  key256 : array[0..31] of byte = ($78,$34,$90,$fd,$6a,$6c,$90,$f0,
                                   $72,$36,$a8,$ed,$40,$27,$94,$f8,
                                   $73,$2c,$96,$fb,$71,$1f,$a0,$f4,
                                   $6c,$34,$9a,$c4,$79,$24,$93,$e8);
begin
  AES_ECB_Init_Encr(key256, 256, context);
  AES_ECB_Encrypt(@pt, @ct, sizeof(pt), context);
  writeln(hexstr(@ct, sizeof(pt)));
end.

D:\BP_WE\WORK\AES\BASE>C:\Programme\BORLAND\DELPHI6\Bin\DCC32 -uC:\Programme\BOR
LAND\DELPHI6\LIB;. -b -q -cc t_ecb.pas
Borland Delphi Version 14.0
Copyright (c) 1983,2002 Borland Software Corporation
6290 lines, 0.11 seconds, 13144 bytes code, 6805 bytes data.

D:\BP_WE\WORK\AES\BASE>T_ECB.EXE
e6861877db7b021e8b755f927243ed7b

Если я использую AES-128, результат df6dfb1fca78323413c9ec48a3162b0a, Поэтому, если вы хотите получить тот же вывод, что и ваш калькулятор, используйте AES-256.

Другие вопросы по тегам