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

如何用OpenSSL使用文件中的密钥生成HMAC-SHA256哈希?

解决方案:使用文件中的密钥生成HMAC-SHA256哈希

你之前的问题核心在于:-hmac 参数需要直接接收密钥内容,而不是密钥文件名——你之前的写法都是把字符串(不管是test_key.key还是路径)直接传给了-hmac,所以OpenSSL自然把它当作密钥本身了。

这里给你两个可靠的单行命令方案:

方案1:用命令替换读取密钥文件内容

这种方法通过shell的命令替换把密钥文件内容直接传入-hmac参数:

openssl dgst -sha256 -hmac "$(cat test_key.key)" mytext.txt
  • 用双引号包裹$(cat test_key.key)是为了避免shell解析密钥中的特殊字符(比如空格、引号、反斜杠),如果你的密钥是纯二进制或包含特殊字符,这个引号必不可少。
  • 注意:如果密钥文件末尾有多余换行符,cat会把它也读进去;如果确认密钥文件只有32字节无多余换行,直接用上面的命令即可;如果有多余换行,可以用tr -d '\n'去除:
    openssl dgst -sha256 -hmac "$(cat test_key.key | tr -d '\n')" mytext.txt
    

方案2:使用OpenSSL原生的密钥文件参数(更健壮)

OpenSSL支持通过-macopt keyfile:选项直接指定密钥文件,不用shell处理内容,这是更安全的方式,尤其适合二进制密钥或含特殊字符的密钥:

openssl dgst -sha256 -mac HMAC -macopt keyfile:test_key.key mytext.txt
  • 这里显式指定-mac HMAC(-hmac其实是-mac HMAC的简写,但结合-macopt时需要明确指定MAC算法),然后用keyfile:直接指向你的密钥文件,OpenSSL会直接读取文件中的32字节作为密钥,不会引入额外的换行或解析问题。

这两个方案都能解决你的问题,推荐优先用方案2,它对各种密钥格式的兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:39:49