Skip to content

sm4_decrypt函数

函数名:sm4_decrypt

函数功能

基于国密SM4算法对加密文本进行解密,支持ECB/CBC两种解密模式、四种填充方式,可解析Base64/Hex格式的密文,还原原始明文数据。

参数规范

参数名类型必填示例特殊说明
ciphertextString"加密后的字符串"待解密的Base64/Hex格式密文,支持直接文本或单元格引用
keyString"1234567890123456"16字节密钥,格式为Hex或Base64
ivString"9876543210987654"16字节IV,32字符Hex或Base64格式,ECB模式可空
modeInt1/21=ECB,2=CBC,默认值为2
paddingInt1/2/3/41=None,2=PKCS7,3=Zeros,4=ISO10126,默认值为2
inputFormatInt0/10=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中测试通过