sm4_decrypt函数
函数名:sm4_decrypt
函数功能
基于国密SM4算法对加密文本进行解密,支持ECB/CBC两种解密模式、四种填充方式,可解析Base64/Hex格式的密文,还原原始明文数据。
参数规范
| 参数名 | 类型 | 必填 | 示例 | 特殊说明 |
|---|---|---|---|---|
ciphertext | String | 是 | "加密后的字符串" | 待解密的Base64/Hex格式密文,支持直接文本或单元格引用 |
key | String | 是 | "1234567890123456" | 16字节密钥,格式为Hex或Base64 |
iv | String | 否 | "9876543210987654" | 16字节IV,32字符Hex或Base64格式,ECB模式可空 |
mode | Int | 否 | 1/2 | 1=ECB,2=CBC,默认值为2 |
padding | Int | 否 | 1/2/3/4 | 1=None,2=PKCS7,3=Zeros,4=ISO10126,默认值为2 |
inputFormat | Int | 否 | 0/1 | 0=Base64,1=Hex,默认值为0 |
使用案例
默认参数解密
问题描述:使用默认CBC模式、PKCS7填充、Base64输入格式解密密文 公式演示:
excel
=sm4_decrypt("ifg5C3wJlfTgJaYjYFMSPA==","12345678901234567890123456789012","98765432109876549876543210987654")输出效果:
text
测试明文指定参数解密
问题描述:指定ECB模式、Zeros填充、Hex输入格式解密单元格密文 公式演示:
excel
=sm4_decrypt(A1,"12345678901234567890123456789012","",1,3,1)输出效果(当A1="6130c118837884920adf12ec16891c2e"):
text
测试明文技术说明
解密规则
- 算法:采用国密标准SM4对称解密算法
- 模式:1=ECB,2=CBC(默认)
- 填充:1=None,2=PKCS7(默认),3=Zeros,4=ISO10126
- 输入:0=Base64(默认),1=Hex格式密文
- 编码:解密结果统一输出UTF-8编码字符串,自动去除空填充字符
异常处理
| 错误场景 | 返回值 |
|---|---|
| 密文/密钥为空 | #VALUE! |
| 密钥/IV长度非16字节 | #VALUE! |
| CBC模式下IV为空 | #VALUE! |
| 密文格式解析失败 | #VALUE! |
| 解密执行异常 | #VALUE! |
注:本函数在WPS 2019+和Excel 365中测试通过