delphi php 加解密,AES使用DCrypt在Delphi(10 Seattle)中加密字符串,使用PHP / OpenSSL解密...

本文探讨了在Delphi和PHP中使用DCrypt与OpenSSL库进行AES-128-CBC加密时出现的不同结果。尽管使用相同的密钥和初始化向量,但加密后的输出在两个环境中不匹配,导致解密失败。问题可能源于加密实现的细节差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用DCrypt在Delphi中使用此代码:

Uses DCPcrypt2, DCPblockciphers, DCPrijndael, DCPbase64;

procedure TForm1.Button1Click(Sender: TObject);

var Cipher : TDCP_rijndael;

ss, k, Data, Key, IV : Ansistring;

const

KeySize = 32; // 32 bytes = 256 bits

BlockSize = 16; // 16 bytes = 128 bits // IV

begin

key := '12345678901234567890123456789012';

iv := '1234567890123456';

Data := 'thisis128bitstxt';

Cipher := TDCP_rijndael.Create(nil);

Cipher.Init(Key[1],128,@IV[1]);

Cipher.EncryptCBC(Data[1],Data[1],Length(Data));

Cipher.Free;

Data := DCPBase64.Base64EncodeStr(Data);

Memo1.Lines.Add(Data);

end;

我得到以下内容:

Eq7iMlVKysMMXdhR0rtrwA ==

使用OpenSSL在PHP中尝试相同:

$s = "thisis128bitstxt";

$s = openssl_encrypt($s, "AES-128-CBC", "12345678901234567890123456789012", 0, "1234567890123456");

echo $s . "";

?>

返回:Eq7iMlVKysMMXdhR0rtrwEbhkypNJyuwGafLILvwpbY =

怎么了?

如果我尝试解密delphi输出,我会得到一个空字符串:

$s = "Eq7iMlVKysMMXdhR0rtrwA==";

$s = openssl_decrypt($s, "AES-128-CBC", "12345678901234567890123456789012", 0, "1234567890123456");

echo $s . "";

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值