簡體   English   中英

將ColdFusion crypto()轉換為PHP openssl_encrypt()

[英]Convert ColdFusion encrypt() to PHP openssl_encrypt()

我現在撞牆了。 我正在嘗試使用PHP的openssl_encrypt()方法(PHP 7)將以下ColdFusion crypto()代碼轉換為PHP。

<cfset key = ToBase64(BinaryDecode("24a5d2b96b9aee2fb515c94fb36da508", "Hex"))>
<cfset encryptedString = Encrypt("Encrypting this string in CF and hopefully PHP too.", key, "AES", "Hex")>

這是我在PHP中的嘗試:(我已經更新了代碼。感謝@Ageax的反饋!)

但是結果仍然不同。

$key = base64_encode(hex2bin("24a5d2b96b9aee2fb515c94fb36da508"));
$encrypted = openssl_encrypt(
    "Encrypting this string in CF and hopefully PHP too.",
    'AES-128-ECB',
    $key
);
echo '<p><strong>AES-128-ECB encryption</strong>: '.bin2hex(base64_decode($encrypted)).'</p>';

結果在ColdFusion中 (感謝@Ageax):

Key: JKXSuWua7i+1FclPs22lCA==
Encryption: 1CCA4C862D3D2DC85637AF2F0E532145DEFC135F1268D5DFA991C77ED624BA0228E557BAEB06D96925B4A2968ACF55AC1312F28BCC42CB89EADE6BB76BD698F5

結果在PHP中

Key: JKXSuWua7i+1FclPs22lCA==
Encryption: 4e487f1f9ff3ecaa82b5672803d9baecf5907c10bd91dbfdaf630927250c195f7e5a1d3e129da161b01a0a307ed73acf672d39614a91a53f6e1adcd1db6d1632

任何反饋都很棒。 謝謝!

我解決了!!! 我的錯誤是將密鑰編碼為base 64(base64_encode),只需刪除密鑰就可以了! 好極了! :)

錯誤:

$key = base64_encode(hex2bin("24a5d2b96b9aee2fb515c94fb36da508"));

正確:

$key = hex2bin("24a5d2b96b9aee2fb515c94fb36da508");

謝謝大家的反饋!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM