crypt库

crypt最先从这里fork而来, 后来在其基础上扩展了多个常见的编码与加密算法.

crypt库目前已经内置了超过24种常见的加密、编码、校验算法, 已然成为Lua生态中集成算法最为全面的库.

使用介绍

导入库: local crypt = require "crypt"

目前支持算法如下:

hexencode 、 hexdecode

参数: key, text

作用: 将文本内容在16进制字符与普通字符之间进行转换.

desencode 、 desdecode

参数: key, text

作用: 使用des算法进行编码与解码.

base64encode 、 base64decode

参数: text

作用: 使用base64算法的编码与解码.

crc32 、 crc64

参数: text

作用: 使用crc(32/64)算法的编码与解码.

dhexchange 、 dhsecret

dhexchange参数: text

dhsecret参数: text1, text2

介绍: DH密钥协商(Diffie–Hellman key exchange)算法, 通常用于在客户端与服务器之间进行协商密匙交换.

xor_str

参数: text1, text2, hex

作用: 将text1text2进行基于字符串的xor运算进行编码, hex参数决定是否将结果进行16进制格式化.

randomkey

参数: hex

作用: 随机生成长度为8字节的字符串, hex参数决定是否将结果进行16进制格式化.

hashkey

参数: text, hex

作用: 将text字符串经过hash运算后生成固定长度为8位的字符串, hex参数决定是否将结果进行16进制格式化.

md5、sha1、sha256、sha512

参数: text, hex

作用: 将text利用md5/sha算法进行编码, hex参数决定是否将结果进行16进制格式化.

hmac64、hmac_md5、hmac64_md5、hmac_hash、hmac_sha1、hmac_sha256、hmac_sha512;

参数: key, text, hex

作用: 将textkey利用hmac+md5/sha/hash算法进行编码, hex参数决定是否将结果进行16进制格式化.

使用方法

  1. local crypt = require "crypt"
  2. local Log = require("logging"):new()
  3.  
  4. -- 测试crc32编码
  5. Log:DEBUG("测试crc32",crypt.crc32("admin"))
  6. -- 测试crc64编码
  7. Log:DEBUG("测试crc64", crypt.crc64("admin"))
  8.  
  9. -- 测试md5编码
  10. Log:DEBUG("测试md5", crypt.md5("admin", true))
  11.  
  12. -- 测试sha1编码, 第二个参数表示进行hex
  13. Log:DEBUG("测试sha1", crypt.sha1("admin", true))
  14.  
  15. -- 测试sha256编码, 第二个参数表示进行hex
  16. Log:DEBUG("测试sha256", crypt.sha256("admin", true))
  17.  
  18. -- 测试sha512编码
  19. Log:DEBUG("测试sha512", crypt.sha512("admin", true))
  20.  
  21. -- 测试hmac_sha1编码, 第二个参数表示进行hex
  22. Log:DEBUG("测试hmac_sha1", crypt.hmac_sha1("admin", "123", true))
  23.  
  24. -- 测试hmac_sha256编码, 第二个参数表示进行hex
  25. Log:DEBUG("测试hmac_sha256", crypt.hmac_sha256("admin", "123", true))
  26.  
  27. -- 测试hmac_sha512编码, 第二个参数表示进行hex
  28. Log:DEBUG("测试hmac_sha512", crypt.hmac_sha512("admin", "123", true))
  29.  
  30. -- 测试hmac_md5编码
  31. Log:DEBUG("测试hmac_md5", crypt.hmac_md5("admin", "123", true))
  32.  
  33. -- 测试hmac64编码
  34. Log:DEBUG("测试hmac64", crypt.hmac64("12345678", "abcdefgh", true))
  35.  
  36. -- 测试hmac64_md5编码
  37. Log:DEBUG("测试hmac64_md5", crypt.hmac64_md5("12345678", "abcdefgh", true))
  38.  
  39. -- 测试hmac_hash编码
  40. Log:DEBUG("测试hmac_hash", crypt.hmac_hash("12345678", "abcdefgh", true))
  41.  
  42. -- 测试randomkey编码
  43. Log:DEBUG("测试randomkey", crypt.randomkey(true))
  44.  
  45. -- 测试hashkey编码
  46. Log:DEBUG("测试hashkey", crypt.hashkey("admin", true))
  47.  
  48. -- 测试desencode编码
  49. Log:DEBUG("测试desencode", crypt.desencode("12345678", "87654321"))
  50. -- 测试desdecode编码
  51. Log:DEBUG("测试desdecode", crypt.desdecode("12345678", crypt.desencode("12345678", "87654321")) == "87654321")
  52.  
  53. -- 测试hexencode编码
  54. Log:DEBUG("测试hexencode", crypt.hexencode("1234567890"), crypt.hexencode("1234567890") == "31323334353637383930")
  55. -- 测试hexdecode编码
  56. Log:DEBUG("测试hexdecode", crypt.hexdecode("31323334353637383930"), crypt.hexdecode("31323334353637383930") == "1234567890")
  57.  
  58. -- 测试base64encode编码
  59. Log:DEBUG("测试base64encode", crypt.base64encode("1234567890"), crypt.base64encode("1234567890") == "MTIzNDU2Nzg5MA==")
  60. -- 测试base64decode编码
  61. Log:DEBUG("测试base64decode", crypt.base64decode("MTIzNDU2Nzg5MA=="), crypt.base64decode("MTIzNDU2Nzg5MA==") == "1234567890")
  62.  
  63. -- 测试str_xor编码, 2xor将还原.
  64. Log:DEBUG("测试str_xor", crypt.xor_str("1234567890", "123", true), crypt.xor_str(crypt.xor_str("1234567890", "123"), "123") == "1234567890")