sm4_decrypt函数
函数名:sm4_decrypt / sm4_decrypt
函数功能
使用 SM4 国密分组加密算法 对密文进行解密,支持 ECB 与 CBC 两种模式,支持多种填充方式(None、PKCS7、Zeros、ISO10126),可处理 Base64 或 Hex 编码的密文,输出原始明文字符串。
参数规范
| 参数名 | 类型 | 必填 | 示例 | 特殊说明 |
|---|---|---|---|---|
ciphertext | String | 是 | "wX3zQ5O0YwDgSmVY6IQtlg==" | 待解密的密文字符串,Base64 或 Hex 编码 |
key | String | 是 | "00112233445566778899AABBCCDDEEFF" | 16字节密钥,32位Hex或Base64编码 |
iv | String | 否 | "AABBCCDDEEFF00112233445566778899" | 16字节IV,仅 CBC 模式必填 |
mode | Number | 否 | 2 | 解密模式:1=ECB,2=CBC(默认) |
padding | Number | 否 | 2 | 填充方式:1=None,2=PKCS7(默认),3=Zeros,4=ISO10126 |
inputFormat | Number | 否 | 0 | 密文输入格式:0=Base64(默认),1=Hex |
使用案例
ECB模式(Base64输入,默认填充)
问题描述:解密Base64编码的ECB模式密文 公式演示:
excel
=sm4_decrypt("9JKzgyxzhc6ja6ptQOqRuNNgYqFist7vKOR0rVUajOY=","00112233445566778899AABBCCDDEEFF",,1)输出效果(示例):
text
Excel公式盒子ECB模式(Hex输入,PKCS7填充)
问题描述:解密Hex编码密文,ECB模式,PKCS7填充 公式演示:
excel
=sm4_decrypt("f492b3832c7385cea36baa6d40ea91b8d36062a162b2deef28e474ad551a8ce6","00112233445566778899AABBCCDDEEFF","",1,2,1)输出效果(示例):
text
Excel公式盒子CBC模式(Base64输入,PKCS7填充)
问题描述:解密CBC模式Base64密文 公式演示:
excel
=sm4_decrypt("gvpNECSR1PSD+bGUP1y+xBsgFZxjvJa9Kr3pXeG2Hjc=","00112233445566778899AABBCCDDEEFF","AABBCCDDEEFF00112233445566778899",2,2,0)输出效果(示例):
text
DataSecurity技术说明
解密模式
- ECB:每个分组独立解密,速度快,但安全性较低
- CBC:每个分组依赖前一个分组密文,更安全,需提供IV
填充方式
- None:明文必须是16字节的倍数
- PKCS7(默认):自动补齐到16字节
- Zeros:补
0x00到16字节 - ISO10126:随机字节补齐,末字节表示填充长度
输入格式
- Base64:常用于网络传输
- Hex:方便人工比对和调试
异常处理
| 错误场景 | 返回值 |
|---|---|
| 密文为空 | #VALUE! |
| 密钥无效(非16字节) | #VALUE! |
| CBC模式缺少IV | #VALUE! |
| IV无效(非16字节) | #VALUE! |
| 输入密文格式错误 | #VALUE! |
| 运算异常 | #VALUE! |
注:本函数在 WPS 2019+ 和 Excel 365 中测试通过