AES-256-CBC加密Payload解密咨询:密钥尺寸错误问题
解密Webhook Payload中data字段的步骤
1. 解析data字段结构
data字段是Base64编码的JSON结构,先解码获取核心参数:
echo "eyJpdiI6ImJLeURnZklsMFcrdWpEMjYrZzFkMGc9PSIsInZhbHVlIjoiZy9lM3lXZkNBaHA0MFVwVlFDT3BUSVpIaWxrbTBLS213cGtVazQwU2dYTGZsc0s1eXpXMGhpbXYwUTdqSkRTc2ZQTXdrUlZvS1ZTU0piNlpybUN0eGxDRHcwUHh4Nkw0aklsUEhWSFdQcXYyRTl5RTZzNm9VRDgwNjFONExneGoiLCJtYWMiOiJmNTkwNzRhNTk3MTc0NTY1OGYwNWNjYjA0YWJjODAyZjVmNTYzYjExZDljY2JjOTI3NjBlZGZkZjc3NGRkNzEyIiwidGFnIjoiIn0=" | base64 -d
解码后得到的JSON包含三个关键字段:
iv:Base64编码的AES初始向量(IV)value:Base64编码的密文mac:消息认证码(用于验证数据完整性)
2. 解决密钥尺寸错误
你提供的密钥WCPDMPxUon4u5kwZrw1LKG3oak4av64mlfEt4mgeF5w=是Base64格式,需先解码为二进制并验证长度:
echo "WCPDMPxUon4u5kwZrw1LKG3oak4av64mlfEt4mgeF5w=" | base64 -d | wc -c
AES-256要求密钥长度为32字节,若上述命令输出不是32,说明密钥复制不全或格式错误:
- 检查密钥是否完整复制
- 若系统给出的是明文密钥而非Base64,直接将明文转UTF-8字节后检查长度
3. 用OpenSSL执行解密
第一步:准备二进制文件
- 导出IV到二进制文件:
echo "bKyDgfIl0W+ujD26+g1d0g==" | base64 -d > iv.bin - 导出密文到二进制文件:
echo "g/e3yWfCAhp40UpVQCOpTIZHilk0KKmwpkUk40SgXLfsk5yzW0himv0Q7jJDSsfPMwkRVOKVS SJb6ZrmCtxlcDw0Pxx6L4jIlPHVHW Pqv2E9yE6s6oUD8061N4Gxg" | base64 -d > ciphertext.bin - 导出密钥到二进制文件:
echo "WCPDMPxUon4u5kwZrw1LKG3oak4av64mlfEt4mgeF5w=" | base64 -d > key.bin
第二步:执行解密命令
openssl enc -d -aes-256-cbc -in ciphertext.bin -out plaintext.txt -iv $(cat iv.bin) -K $(cat key.bin | xxd -p -c 32)
-K参数需要密钥的十六进制字符串,xxd -p -c 32负责将二进制密钥转为十六进制格式- 解密后的原始数据会保存到
plaintext.txt中
4. (可选)验证数据完整性
若需确认数据未被篡改,可使用密钥对明文+IV计算HMAC-SHA256,对比mac字段的值:
cat plaintext.txt iv.bin | openssl dgst -sha256 -hmac $(cat key.bin)
输出的哈希值应与mac字段完全一致。
内容的提问来源于stack exchange,提问作者sfNewbie
相关产品推荐
相关产品推荐

