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

如何将Base64字符串转为32字节Hex以适配OpenSSL AES-256加解密?

把Base64字符串转成32字节Hex格式(用于OpenSSL AES-256加解密)

步骤1:解码Base64到二进制文件

先定义目标Base64字符串,解码后保存为二进制文件:

local base64_str="OQbb8rXnj/DwvglW018uP/1tqldwiJMbjxBhX7ZqwTw="
echo "${base64_str}" | base64 --decode > foo.txt

用wc -c < foo.txt可以确认,这个二进制文件的大小是32字节,符合AES-256密钥/IV的长度要求。

步骤2:二进制转Hex格式

使用xxd工具的-p参数(输出纯Hex,不带偏移量和换行),把二进制文件转成Hex字符串:

xxd -p ./foo.txt > ./foo.hex.txt

注意:原命令xxd -p ./foo.txt ./foo.hex.txt写法错误,xxd不支持直接指定输出文件作为参数,需通过重定向>输出到目标文件。

生成的foo.hex.txt里的Hex值是:

3906dbf2b5e78ff0f0be0956d35f2e3ffd6daa577088931b8f10615fb66ac13c

此时用wc -c < foo.hex.txt会显示64字节,刚好对应32字节二进制的Hex编码(每个二进制字节对应2个Hex字符),原操作中得到66字节是因为Hex字符串里包含了换行符,而xxd -p会自动去除多余换行,生成适合OpenSSL使用的连续Hex字符串。

步骤3:封装成复用函数

为了避免生成中间文件,直接把Base64转成Hex,可以封装一个base64_to_hex函数:

base64_to_hex() {
    echo -n "$1" | base64 --decode | xxd -p
}

之后就能直接在OpenSSL命令中调用这个函数,获取Hex格式的密钥和IV,执行AES-256-CTR加解密:

local iv_hex=$(base64_to_hex "${iv}")
local key_hex=$(base64_to_hex "${key}")

openssl enc -aes-256-ctr -K "${key_hex}" -iv "${iv_hex}" -in "${input_file}" -out "${output_file}"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:30:08