我使用的是TurboPower Lockbox 3.它没有给出正确的结果,我在哪里犯错?
我正在这个网站上做正确的计算。
我正在计算python,我得到了正确的结果。
正确的结果。
'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;
我在哪里犯错误?
答案 0 :(得分:2)
我已在您的旧问题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。