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

如何用OpenSSL解密Node.js生成的AES-256-CBC加密字符串?

使用OpenSSL解密Node.js AES-256-CBC加密的字符串

没问题,我来帮你拆解怎么用OpenSSL解密这段Node.js代码生成的加密串。首先先理清楚你代码里的几个关键参数,这样才能对应上OpenSSL的命令:

  • 加密算法:AES-256-CBC
  • IV值:0f9387b3f94bf06f(16字节的十六进制字符串,符合CBC模式的IV长度要求)
  • 密钥:ZTk0YTU5YjNhMjk4NGI3NmIxNWExNzdi(Base64编码的32字节密钥,AES-256恰好需要32字节密钥,解码后刚好匹配)
  • 加密输出格式:十六进制(Hex)

对应的OpenSSL解密命令

你可以直接用以下命令解密,记得把<encrypted-hex-string>替换为实际生成的加密字符串:

echo -n "<encrypted-hex-string>" | xxd -r -p | openssl enc -d -aes-256-cbc -iv 0f9387b3f94bf06f -K $(echo -n "ZTk0YTU5YjNhMjk4NGI3NmIxNWExNzdi" | base64 -d | xxd -p | tr -d '\n')

命令各部分解释

我逐个拆解命令里的关键环节,方便你理解背后的逻辑:

  1. echo -n "<encrypted-hex-string>" | xxd -r -p:把十六进制格式的加密串转换成二进制数据(OpenSSL默认处理二进制输入,而你的Node.js代码输出的是Hex文本)
  2. openssl enc -d -aes-256-cbc:指定使用AES-256-CBC算法执行解密操作(-d代表解密模式)
  3. -iv 0f9387b3f94bf06f:直接传入十六进制格式的IV值,OpenSSL会自动解析为二进制IV
  4. -K $(echo -n "ZTk0YTU5YjNhMjk4NGI3NmIxNWExNzdi" | base64 -d | xxd -p | tr -d '\n'):将Base64编码的密钥先解码为原始二进制,再转成十六进制字符串,传给OpenSSL的-K参数(-K要求密钥以十六进制格式传入)

实际操作示例

假设你的Node.js代码加密"test message"后得到的Hex字符串是a1b2c3d4e5f6...,那么解密命令就是:

echo -n "a1b2c3d4e5f6..." | xxd -r -p | openssl enc -d -aes-256-cbc -iv 0f9387b3f94bf06f -K $(echo -n "ZTk0YTU5YjNhMjk4NGI3NmIxNWExNzdi" | base64 -d | xxd -p | tr -d '\n')

执行后就会输出明文test message。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:36:42