首页 > 解决方案 > 将 ColdFusion encrypt() 转换为 PHP openssl_encrypt()

问题描述

我现在正在碰壁;我正在尝试使用PHP 的 openssl_encrypt()方法(PHP 7)将以下ColdFusion encrypt()代码转换为 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

任何反馈都会很棒。谢谢!

标签: phpencryptioncoldfusion

解决方案


我解决了!!!我的错误是将密钥编码为 base 64 (base64_encode),你只需删除它就可以了!耶!:)

错误的:

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

正确的:

$key = hex2bin("24a5d2b96b9aee2fb515c94fb36da508");

谢谢大家的反馈!


推荐阅读