main.lua 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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(9000)--初始化watchdog设置为9s
  10. sys.timerLoopStart(wdt.feed, 3000)--3s喂一次狗
  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. -- 打印所有支持的cipher suites
  49. if crypto.cipher_suites then
  50. log.info("cipher", "suites", json.encode(crypto.cipher_suites()))
  51. end
  52. for i=1, 10 do
  53. sys.wait(100)
  54. log.info("crypto", "真随机数",string.unpack("I",crypto.trng(4)))
  55. log.info("crypto", "伪随机数",math.random())
  56. end
  57. -- totp的密钥
  58. local secret = "VK54ZXPO74ISEM2E"
  59. --写死时间戳用来测试
  60. local ts = 1646796576
  61. --生成十分钟的动态码验证下
  62. for i=1,600,30 do
  63. local r = crypto.totp(secret,ts+i)
  64. local time = os.date("*t",ts+i + 8*3600)--东八区
  65. log.info("totp", string.format("%06d" ,r),time.hour,time.min,time.sec)
  66. end
  67. if crypto.md_file then
  68. log.info("md5", crypto.md_file("MD5", "/luadb/logo.jpg"))
  69. log.info("sha1", crypto.md_file("SHA1", "/luadb/logo.jpg"))
  70. log.info("sha256", crypto.md_file("SHA256", "/luadb/logo.jpg"))
  71. log.info("hmac_md5", crypto.md_file("MD5", "/luadb/logo.jpg", "123456"))
  72. log.info("hmac_sha1", crypto.md_file("SHA1", "/luadb/logo.jpg", "123456"))
  73. log.info("hmac_sha256", crypto.md_file("SHA256", "/luadb/logo.jpg", "123456"))
  74. end
  75. log.info("crypto", "ALL Done")
  76. sys.wait(100000)
  77. end)
  78. -- 用户代码已结束---------------------------------------------
  79. -- 结尾总是这一句
  80. sys.run()
  81. -- sys.run()之后后面不要加任何语句!!!!!