sm4_encrypt函数
函数名:sm4_encrypt
函数功能
基于国密SM4算法对明文文本进行加密,支持ECB/CBC两种加密模式、四种填充方式,可输出Base64/Hex格式的加密结果,适配多场景数据加密需求。
参数规范
| 参数名 | 类型 | 必填 | 示例 | 特殊说明 |
|---|---|---|---|---|
plaintext | String | 是 | "测试明文" | 待加密的文本,支持直接文本或单元格引用 |
key | String | 是 | "1234567890123456" | 16字节密钥,需为32字符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 |
outputFormat | Int | 否 | 0/1 | 0=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中测试通过