main.lua 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "gmssldemo"
  3. VERSION = "1.0.0"
  4. log.info("main", PROJECT, VERSION)
  5. -- sys库是标配
  6. _G.sys = require("sys")
  7. if wdt then
  8. --添加硬狗防止程序卡死,在支持的设备上启用这个功能
  9. wdt.init(9000)--初始化watchdog设置为9s
  10. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  11. end
  12. -- Air101/Air103默认80M主频, 跑国密算法会很慢的,调整到240M
  13. if mcu and (rtos.bsp() == "AIR101" or rtos.bsp() == "AIR103") then
  14. mcu.setClk(240)
  15. end
  16. sys.taskInit(function()
  17. sys.wait(3000)
  18. log.info("gmssl", "start")
  19. -- SM2 , 非对称加密, 类似于RSA,但属于椭圆算法
  20. -- 就当前实现还是比较慢的
  21. if gmssl.sm2encrypt then -- 部分BSP不支持
  22. local originStr = "encryption standard"
  23. local pkx = "191BFF8148006EEA72D857CB974DB9F4903B3CA3655D8D597AD4663F5044DCB1"
  24. local pky = "E2F7888AF1FCD8C653A8059CD2F379855389F71A7709E2C1EE1E914C855EF119"
  25. local private = "1649AB77A00637BD5E2EFE283FBF353534AA7F7CB89463F208DDBC2920BB0DA0"
  26. local encodeStr = gmssl.sm2encrypt(pkx,pky,originStr)
  27. print(originStr,"encrypt",string.toHex(encodeStr))
  28. log.info("testsm.sm2decrypt",gmssl.sm2decrypt(private,encodeStr,pkx,pky))
  29. end
  30. -- SM3 算法, hash类
  31. if gmssl.sm3update then
  32. encodeStr = gmssl.sm3update("lqlq666lqlq946")
  33. log.info("testsm.sm3update",string.toHex(encodeStr))
  34. end
  35. if gmssl.sm4encrypt then
  36. local passwd = "1234567890123456"
  37. local iv = "1234567890666666"
  38. -- SM4 算法, 对称加密
  39. originStr = ">>SM4 ECB ZeroPadding test<<"
  40. --加密模式:ECB;填充方式:ZeroPadding;密钥:1234567890123456;密钥长度:128 bit
  41. encodeStr = gmssl.sm4encrypt("ECB","ZERO",originStr,passwd)
  42. print(originStr,"encrypt",string.toHex(encodeStr))
  43. log.info("testsm.sm4decrypt",gmssl.sm4decrypt("ECB","ZERO",encodeStr,passwd))
  44. originStr = ">>SM4 ECB Pkcs5Padding test<<"
  45. --加密模式:ECB;填充方式:Pkcs5Padding;密钥:1234567890123456;密钥长度:128 bit
  46. encodeStr = gmssl.sm4encrypt("ECB","PKCS5",originStr,passwd)
  47. print(originStr,"encrypt",string.toHex(encodeStr))
  48. log.info("testsm.sm4decrypt",gmssl.sm4decrypt("ECB","PKCS5",encodeStr,passwd))
  49. originStr = ">>SM4 CBC Pkcs5Padding test<<"
  50. --加密模式:CBC;填充方式:Pkcs5Padding;密钥:1234567890123456;密钥长度:128 bit;偏移量:1234567890666666
  51. encodeStr = gmssl.sm4encrypt("CBC","PKCS5",originStr,passwd,iv)
  52. print(originStr,"encrypt",string.toHex(encodeStr))
  53. log.info("testsm.sm4decrypt",gmssl.sm4decrypt("CBC","PKCS5",encodeStr,passwd, iv))
  54. end
  55. log.info("sm", "ALL Done")
  56. end)
  57. -- 用户代码已结束---------------------------------------------
  58. -- 结尾总是这一句
  59. sys.run()
  60. -- sys.run()之后后面不要加任何语句!!!!!