Files
mobile_comm/luatos/air780epm/module/Air780EPM/demo/gmssl/gmssl_sm4.lua
T
wangfq 173dd6874f init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码
- 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等)
- 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
2026-08-31 08:53:49 +08:00

54 lines
2.3 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
--[[
@module gmssl_sm4
@summary gmssl_sm4
@version 1.0
@date 2025.10.29
@author 沈园园
@usage
本文件为gmssl sm4应用功能模块,核心业务逻辑为:
1、演示国密sm4加密和解码的应用;
本文件没有对外接口,直接在main.lua中require "gmssl_sm4"就可以加载运行;
]]
local function gmssl_sm4_task_func()
if gmssl.sm4encrypt then
log.info("=== SM4测试")
local passwd = "1234567890123456"
local iv = "1234567890666666"
-- SM4 算法, 对称加密
originStr = ">>SM4 ECB ZeroPadding test<<"
--加密模式:ECB;填充方式:ZeroPadding;密钥:1234567890123456
encodeStr = gmssl.sm4encrypt("ECB", "ZERO", originStr, passwd)
log.info("sm4.ecb.zero", "加密后", string.toHex(encodeStr))
log.info("sm4.ecb.zero", "解密后", gmssl.sm4decrypt("ECB","ZERO",encodeStr,passwd))
originStr = ">>SM4 ECB Pkcs5Padding test<<"
--加密模式:ECB;填充方式:Pkcs5Padding;密钥:1234567890123456
encodeStr = gmssl.sm4encrypt("ECB", "PKCS5", originStr, passwd)
log.info("sm4.ecb.pks5", "加密后", string.toHex(encodeStr))
log.info("sm4.ecb.pks5", "解密后", gmssl.sm4decrypt("ECB","PKCS5",encodeStr,passwd))
originStr = ">>SM4 CBC Pkcs5Padding test<<"
--加密模式:CBC;填充方式:Pkcs5Padding;密钥:1234567890123456;偏移量:1234567890666666
encodeStr = gmssl.sm4encrypt("CBC","PKCS5", originStr, passwd, iv)
log.info("sm4.cbc.pks5", "加密后", string.toHex(encodeStr))
log.info("sm4.cbc.pks5", "解密后", gmssl.sm4decrypt("CBC","PKCS5",encodeStr,passwd, iv))
-- 完全对齐16字节的对比测试
originStr = "1234567890123456"
encodeStr = gmssl.sm4encrypt("ECB","PKCS7",originStr,passwd)
log.info("sm4.ecb.pkcs7", encodeStr:toHex())
encodeStr = gmssl.sm4encrypt("ECB","PKCS5",originStr,passwd)
log.info("sm4.ecb.pkcs5", encodeStr:toHex())
encodeStr = gmssl.sm4encrypt("ECB","ZERO",originStr,passwd)
log.info("sm4.ecb.zero", encodeStr:toHex())
encodeStr = gmssl.sm4encrypt("ECB","NONE",originStr,passwd)
log.info("sm4.ecb.none", encodeStr:toHex())
end
end
sys.taskInit(gmssl_sm4_task_func)