gmssl_sm4.lua 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. --[[
  2. @module gmssl_sm4
  3. @summary gmssl_sm4
  4. @version 1.0
  5. @date 2025.10.29
  6. @author 沈园园
  7. @usage
  8. 本文件为gmssl sm4应用功能模块,核心业务逻辑为:
  9. 1、演示国密sm4加密和解码的应用;
  10. 本文件没有对外接口,直接在main.lua中require "gmssl_sm4"就可以加载运行;
  11. ]]
  12. local function gmssl_sm4_task_func()
  13. if gmssl.sm4encrypt then
  14. log.info("=== SM4测试")
  15. local passwd = "1234567890123456"
  16. local iv = "1234567890666666"
  17. -- SM4 算法, 对称加密
  18. originStr = ">>SM4 ECB ZeroPadding test<<"
  19. --加密模式:ECB;填充方式:ZeroPadding;密钥:1234567890123456;
  20. encodeStr = gmssl.sm4encrypt("ECB", "ZERO", originStr, passwd)
  21. log.info("sm4.ecb.zero", "加密后", string.toHex(encodeStr))
  22. log.info("sm4.ecb.zero", "解密后", gmssl.sm4decrypt("ECB","ZERO",encodeStr,passwd))
  23. originStr = ">>SM4 ECB Pkcs5Padding test<<"
  24. --加密模式:ECB;填充方式:Pkcs5Padding;密钥:1234567890123456;
  25. encodeStr = gmssl.sm4encrypt("ECB", "PKCS5", originStr, passwd)
  26. log.info("sm4.ecb.pks5", "加密后", string.toHex(encodeStr))
  27. log.info("sm4.ecb.pks5", "解密后", gmssl.sm4decrypt("ECB","PKCS5",encodeStr,passwd))
  28. originStr = ">>SM4 CBC Pkcs5Padding test<<"
  29. --加密模式:CBC;填充方式:Pkcs5Padding;密钥:1234567890123456;偏移量:1234567890666666
  30. encodeStr = gmssl.sm4encrypt("CBC","PKCS5", originStr, passwd, iv)
  31. log.info("sm4.cbc.pks5", "加密后", string.toHex(encodeStr))
  32. log.info("sm4.cbc.pks5", "解密后", gmssl.sm4decrypt("CBC","PKCS5",encodeStr,passwd, iv))
  33. -- 完全对齐16字节的对比测试
  34. originStr = "1234567890123456"
  35. encodeStr = gmssl.sm4encrypt("ECB","PKCS7",originStr,passwd)
  36. log.info("sm4.ecb.pkcs7", encodeStr:toHex())
  37. encodeStr = gmssl.sm4encrypt("ECB","PKCS5",originStr,passwd)
  38. log.info("sm4.ecb.pkcs5", encodeStr:toHex())
  39. encodeStr = gmssl.sm4encrypt("ECB","ZERO",originStr,passwd)
  40. log.info("sm4.ecb.zero", encodeStr:toHex())
  41. encodeStr = gmssl.sm4encrypt("ECB","NONE",originStr,passwd)
  42. log.info("sm4.ecb.none", encodeStr:toHex())
  43. end
  44. end
  45. sys.taskInit(gmssl_sm4_task_func)