Skip to content

sm4_encrypt函数

函数名:sm4_encrypt

函数功能

基于国密SM4算法对明文文本进行加密,支持ECB/CBC两种加密模式、四种填充方式,可输出Base64/Hex格式的加密结果,适配多场景数据加密需求。

参数规范

参数名类型必填示例特殊说明
plaintextString"测试明文"待加密的文本,支持直接文本或单元格引用
keyString"1234567890123456"16字节密钥,需为32字符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
outputFormatInt0/10=Base64,1=Hex,默认值为0

使用案例

默认参数加密

问题描述:使用默认CBC模式、PKCS7填充、Base64输出格式加密文本 公式演示

excel
=sm4_encrypt("测试明文","12345678901234567890123456789012","98765432109876549876543210987654")

输出效果

text
ifg5C3wJlfTgJaYjYFMSPA==

指定参数加密

问题描述:指定ECB模式、Zeros填充、Hex格式加密单元格文本 公式演示

excel
=sm4_encrypt(A1,"12345678901234567890123456789012","",1,3,1)

输出效果(当A1="测试明文"):

text
6130c118837884920adf12ec16891c2e

技术说明

加密规则

  • 算法:采用国密标准SM4对称加密算法
  • 模式:1=ECB,2=CBC(默认)
  • 填充:1=None,2=PKCS7(默认),3=Zeros,4=ISO10126
  • 输出:0=Base64(默认),1=小写十六进制字符串
  • 编码:明文统一使用UTF-8编码转换

异常处理

错误场景返回值
明文/密钥为空#VALUE!
密钥/IV长度非16字节#VALUE!
CBC模式下IV为空#VALUE!
参数格式非法#VALUE!
加密执行异常#VALUE!

注:本函数在WPS 2019+和Excel 365中测试通过