main.lua 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. -- LuaTools需要PROJECT和VERSION这两个信息
  2. PROJECT = "cryptodemo"
  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(15000)--初始化watchdog设置为15s
  10. sys.timerLoopStart(wdt.feed, 10000)--10s喂一次狗
  11. end
  12. sys.taskInit(function()
  13. sys.wait(1000)
  14. -- MD5,输出结果已经hex编码
  15. log.info("md5", crypto.md5("abc"))
  16. log.info("hmac_md5", crypto.hmac_md5("abc", "1234567890"))
  17. -- SHA1,输出结果已经hex编码
  18. log.info("sha1", crypto.sha1("abc"))
  19. log.info("hmac_sha1", crypto.hmac_sha1("abc", "1234567890"))
  20. -- SHA256,输出结果已经hex编码
  21. log.info("sha256", crypto.sha256("abc"))
  22. log.info("hmac_sha256", crypto.hmac_sha256("abc", "1234567890"))
  23. -- SHA512,输出结果已经hex编码
  24. log.info("sha512", crypto.sha512("abc"))
  25. log.info("hmac_sha512", crypto.hmac_sha512("abc", "1234567890"))
  26. -- AES加密, 未经Hex编码. AES-128-ECB 算法,待加密字符串如果超过32字节会报错,待查. by wendal 20200812
  27. local data_encrypt = crypto.cipher_encrypt("AES-128-ECB", "PKCS7", "12345678901234 > 123456", "1234567890123456")
  28. local data2_encrypt = crypto.cipher_encrypt("AES-128-CBC", "PKCS7", "12345678901234 > 123456", "1234567890123456", "1234567890666666")
  29. log.info("AES", "aes-128-ecb", data_encrypt:toHex())
  30. log.info("AES", "aes-128-cbc", data2_encrypt:toHex())
  31. -- AES解密, 未经Hex编码
  32. local data_decrypt = crypto.cipher_decrypt("AES-128-ECB", "PKCS7", data_encrypt, "1234567890123456")
  33. local data2_decrypt = crypto.cipher_decrypt("AES-128-CBC", "PKCS7", data2_encrypt, "1234567890123456", "1234567890666666")
  34. log.info("AES", "aes-128-ecb", data_decrypt)
  35. log.info("AES", "aes-128-cbc", data2_decrypt)
  36. log.info("mem", rtos.meminfo("sys"))
  37. -- DES-ECB 加解密
  38. local data1 = crypto.cipher_encrypt("DES-ECB", "PKCS7", "abcdefg", "12345678")
  39. if data1 then -- DES-ECB 在某些平台不支持的
  40. print(data1:toHex())
  41. local data2 = crypto.cipher_decrypt("DES-ECB", "PKCS7", data1, "12345678")
  42. print(data2)
  43. end
  44. -- 打印所有支持的cipher
  45. if crypto.cipher_list then
  46. log.info("cipher", "list", json.encode(crypto.cipher_list()))
  47. end
  48. for i=1, 10 do
  49. sys.wait(100)
  50. log.info("crypto", "真随机数",string.unpack("I",crypto.trng(4)))
  51. log.info("crypto", "伪随机数",math.random())
  52. end
  53. -- totp的密钥
  54. local secret = "VK54ZXPO74ISEM2E"
  55. --写死时间戳用来测试
  56. local ts = 1646796576
  57. --生成十分钟的动态码验证下
  58. for i=1,600,30 do
  59. local r = crypto.totp(secret,ts+i)
  60. local time = os.date("*t",ts+i + 8*3600)--东八区
  61. log.info("totp", string.format("%06d" ,r),time.hour,time.min,time.sec)
  62. end
  63. log.info("crypto", "ALL Done")
  64. sys.wait(100000)
  65. end)
  66. -- 用户代码已结束---------------------------------------------
  67. -- 结尾总是这一句
  68. sys.run()
  69. -- sys.run()之后后面不要加任何语句!!!!!