2

DCP Crypt ライブラリで一部の情報の暗号化と復号化に問題があります。私は Delphi XE を使用しており、PHP で投稿された関数を Delphi に投稿し、 Rijndael を使用して Encryption-Decryption に戻していますが、機能しません。

私の問題は、使用しているキーがバイナリではなく16進モードであるためだと思います。

var 
  Key, IV: ansiString;
  Data: ansiString;
begin
  Key := '09CB0785F13CD0D557C0940E72E0DCDC86CDC89769044E95DB51A782E7D996FFF3';
  Iv  := '09CB0785F13CD0D557C0940E72E0DCDC';

  Data := <?xml version="1.0" encoding="UTF-8"?><MyNode><Head><CustNo>...';

この関数を使用する場合EncryptData、公開鍵を 2 進数または 16 進数で渡す必要がありますか?

 asCryptBody := EncryptData(asXMLBody, Public_Key, Init_vector);

また

 asCryptBody := EncryptData(asXMLBody, HexToStrBin(Public_Key), HexToStrBin(Init_vector));

どこ

function StrBinToHex(const s: AnsiString): AnsiString;
var
  i:integer;
begin
  result := '';
  for i := 1 to length(s) do
    result := result + inttohex(Ord(s[i]),1);
end;

function HexToStrBin(const s: AnsiString): AnsiString;
var
  i:integer;
begin
  result := '';
  for i := 1 to (length(s) div 2) do
    result := result + char( strtoint('$'+ copy(s,(i*2)-1,2)) );
end;

2 つの方法を試しましたが、それでも暗号化は PHP 暗号化とは異なります。

関数 HexToStrBin と StrBinToHex が問題なのでしょうか?

4

1 に答える 1