小编use*_*791的帖子

使用DCPcrypt的Delphi程序在升级到XE2后不会从PHP解密

我有一个在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)

php delphi rijndael

4
推荐指数
2
解决办法
2345
查看次数

标签 统计

delphi ×1

php ×1

rijndael ×1