Skip to content

sm4_decrypt函数

函数名:sm4_decrypt / sm4_decrypt

函数功能

使用 SM4 国密分组加密算法 对密文进行解密,支持 ECBCBC 两种模式,支持多种填充方式(None、PKCS7、Zeros、ISO10126),可处理 Base64Hex 编码的密文,输出原始明文字符串。

参数规范

参数名类型必填示例特殊说明
ciphertextString"wX3zQ5O0YwDgSmVY6IQtlg=="待解密的密文字符串,Base64 或 Hex 编码
keyString"00112233445566778899AABBCCDDEEFF"16字节密钥,32位Hex或Base64编码
ivString"AABBCCDDEEFF00112233445566778899"16字节IV,仅 CBC 模式必填
modeNumber2解密模式:1=ECB,2=CBC(默认)
paddingNumber2填充方式:1=None,2=PKCS7(默认),3=Zeros,4=ISO10126
inputFormatNumber0密文输入格式: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 中测试通过