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 が問題なのでしょうか?