You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP的openssl_encrypt转Ruby实现结果不一致问题排查

问题原因与解决方法

问题出在输出编码格式不一致:

  • PHP的openssl_encrypt函数默认会将加密后的二进制数据自动进行Base64编码,最终输出Base64格式的字符串。
  • Ruby代码直接输出的是加密后的原始二进制数据,未做Base64编码,puts输出时会将不可打印字符转义为十六进制形式。

修正后的Ruby代码

require 'base64'

cipher = OpenSSL::Cipher.new('AES-256-CBC').encrypt
cipher.iv = '0' * 16
cipher.key = '0' * 32
encrypted = cipher.update('Hello') + cipher.final

# 对加密后的二进制数据做Base64编码
puts Base64.strict_encode64(encrypted) # 输出: lfbW8JcPq6dkEnmY0hG7Vw==

验证说明

修正后,Ruby代码通过Base64.strict_encode64方法将加密得到的二进制数据编码为标准Base64字符串,输出结果与PHP完全一致。

内容的提问来源于stack exchange,提问作者Cyril

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:30:47