php - 将 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
任何反馈都会很棒。谢谢!
解决方案
我解决了!!!我的错误是将密钥编码为 base 64 (base64_encode),你只需删除它就可以了!耶!:)
错误的:
$key = base64_encode(hex2bin("24a5d2b96b9aee2fb515c94fb36da508"));
正确的:
$key = hex2bin("24a5d2b96b9aee2fb515c94fb36da508");
谢谢大家的反馈!
推荐阅读
- c# - 为什么使用 PCap.NET 发送的数据包没有填写 TCP 选项?
- docker - Caching gradle output in dockerfile
- reactjs - React 获取数据空指针异常
- django - 在模板中,当 model.value == "str" 时如何创建 if 语句
- functional-programming - 为什么 Phoenix 中的控制器动作作为原子而不是函数传递?
- javascript - 动态更改指南的 value 和 toValue (AMCharts)
- java - What's causing my SocketException: Connection reset?
- android - 我如何使约束布局以编程方式包装我的文本视图
- javascript - 在 Javascript 中推送数据,作为 Int 而不是字符串
- docker - 本地 GitLab docker 容器中的邮件服务