Skip to content

国密SM4解密

函数名:sm4解密 / sm4_decrypt

功能描述

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

会员等级:🟢 免费版(Free)

语法

excel
=sm4_decrypt(密文, 密钥(Hex或Base64)[, IV (32字符Hex或Base64),ECB模式可空), 模式(1=ECB 2=CBC), 填充(1=None 2=PKCS7 3=Zeros 4=ISO10126), 输入格式 (0=Base64 1=Hex)])

参数

参数名类型必填默认值说明
密文String待解密的 Base64 / Hex 字符串
密钥(Hex或Base64)StringHex 或 Base64 格式的 16 字节密钥
IV (32字符Hex或Base64),ECB模式可空)Stringnull16 字节 IV(32 字符 Hex 或 Base64,ECB 模式可空)
模式(1=ECB 2=CBC)Int21=ECB,2=CBC(默认)
填充(1=None 2=PKCS7 3=Zeros 4=ISO10126)Int21=None,2=PKCS7(默认),3=Zeros,4=ISO10126
输入格式 (0=Base64 1=Hex)Int00=Base64(默认),1=Hex

返回值

String - 解密后的明文(UTF-8 字符串),并自动去除末尾的空字符(TrimEnd('\0'))。

使用示例

默认 CBC + PKCS7 + Base64 解密

公式

excel
=sm4_decrypt("ifg5C3wJlfTgJaYjYFMSPA==","12345678901234567890123456789012","98765432109876549876543210987654")

结果

测试明文

ECB + Zeros + Hex 解密

公式

excel
=sm4_decrypt("6130c118837884920adf12ec16891c2e","12345678901234567890123456789012","",1,3,1)

结果

测试明文

技术说明

  • 算法:采用国密 SM4 对称解密算法,密钥固定为 16 字节(128 位)。
  • 密钥 / IV 解析(ParseCryptoParam):长度为 32 且全为十六进制字符时按 Hex 解析,否则按 Base64 解析;解析后须为 16 字节。
  • 模式说明:mode=1(ECB)不需要 IV;mode=2(CBC,默认)必须提供 16 字节 IV。
  • 密文输入:inputFormat=1 时按 Hex 解析密文,默认(0)按 Base64 解析。
  • 解密结果统一以 UTF-8 解码为字符串,并通过 TrimEnd('\0') 去除 Zeros 等填充可能遗留的尾部空字符。
  • sm4加密 配套使用时,模式、填充、密钥、IV 须保持一致。

错误处理

错误场景返回值
密文或密钥为空#VALUE!
密钥解析后长度非 16 字节#VALUE!
CBC 模式下 IV 为空#VALUE!
IV 解析后长度非 16 字节#VALUE!
密文格式解析失败(非法 Base64 / Hex)#VALUE!
解密过程异常#VALUE!

基于源代码最新版本文档