我有一个在Delphi 2007中开发的应用程序,其中一个值由PHP加密并在应用程序中解密.加密算法是RIJNDAEL 128.当我移动XE2并安装最新版本的DCPcrypt时,应用程序运行但不再能够从PHP解密加密的字符串.结果看起来像中文字符,所以我想知道我是否需要修改我对加密密钥,向量或加密字符串的处理,以解释XE2使用Unicode字符的事实.
PHP加密由以下内容执行:(mcrypt_cbc(MCRYPT_RIJNDAEL_128,$ key,$ date_str,MCRYPT_ENCRYPT,$ iv))
这两个相关的Delphi函数在这里:
function PadWithZeros(const str : string; size : integer) : string;
var
origsize, i : integer;
begin
Result := str;
origsize := Length(Result);
if ((origsize mod size) <> 0) or (origsize = 0) then
begin
SetLength(Result,((origsize div size)+1)*size);
for i := origsize+1 to Length(Result) do
Result[i] := #0;
end;
end;
procedure TfrmMain.btnDecryptClick(Sender: TObject);
var
Cipher : TDCP_rijndael;
Data, Key, IV : string;
begin
// Pad Key and IV with zeros as appropriate
Key …Run Code Online (Sandbox Code Playgroud)