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
作用: 将text1
与text2
进行基于字符串的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
作用: 将text
与key
利用hmac
+md5/sha/hash
算法进行编码, hex
参数决定是否将结果进行16进制格式化.
使用方法
local crypt = require "crypt"
local Log = require("logging"):new()
-- 测试crc32编码
Log:DEBUG("测试crc32",crypt.crc32("admin"))
-- 测试crc64编码
Log:DEBUG("测试crc64", crypt.crc64("admin"))
-- 测试md5编码
Log:DEBUG("测试md5", crypt.md5("admin", true))
-- 测试sha1编码, 第二个参数表示进行hex
Log:DEBUG("测试sha1", crypt.sha1("admin", true))
-- 测试sha256编码, 第二个参数表示进行hex
Log:DEBUG("测试sha256", crypt.sha256("admin", true))
-- 测试sha512编码
Log:DEBUG("测试sha512", crypt.sha512("admin", true))
-- 测试hmac_sha1编码, 第二个参数表示进行hex
Log:DEBUG("测试hmac_sha1", crypt.hmac_sha1("admin", "123", true))
-- 测试hmac_sha256编码, 第二个参数表示进行hex
Log:DEBUG("测试hmac_sha256", crypt.hmac_sha256("admin", "123", true))
-- 测试hmac_sha512编码, 第二个参数表示进行hex
Log:DEBUG("测试hmac_sha512", crypt.hmac_sha512("admin", "123", true))
-- 测试hmac_md5编码
Log:DEBUG("测试hmac_md5", crypt.hmac_md5("admin", "123", true))
-- 测试hmac64编码
Log:DEBUG("测试hmac64", crypt.hmac64("12345678", "abcdefgh", true))
-- 测试hmac64_md5编码
Log:DEBUG("测试hmac64_md5", crypt.hmac64_md5("12345678", "abcdefgh", true))
-- 测试hmac_hash编码
Log:DEBUG("测试hmac_hash", crypt.hmac_hash("12345678", "abcdefgh", true))
-- 测试randomkey编码
Log:DEBUG("测试randomkey", crypt.randomkey(true))
-- 测试hashkey编码
Log:DEBUG("测试hashkey", crypt.hashkey("admin", true))
-- 测试desencode编码
Log:DEBUG("测试desencode", crypt.desencode("12345678", "87654321"))
-- 测试desdecode编码
Log:DEBUG("测试desdecode", crypt.desdecode("12345678", crypt.desencode("12345678", "87654321")) == "87654321")
-- 测试hexencode编码
Log:DEBUG("测试hexencode", crypt.hexencode("1234567890"), crypt.hexencode("1234567890") == "31323334353637383930")
-- 测试hexdecode编码
Log:DEBUG("测试hexdecode", crypt.hexdecode("31323334353637383930"), crypt.hexdecode("31323334353637383930") == "1234567890")
-- 测试base64encode编码
Log:DEBUG("测试base64encode", crypt.base64encode("1234567890"), crypt.base64encode("1234567890") == "MTIzNDU2Nzg5MA==")
-- 测试base64decode编码
Log:DEBUG("测试base64decode", crypt.base64decode("MTIzNDU2Nzg5MA=="), crypt.base64decode("MTIzNDU2Nzg5MA==") == "1234567890")
-- 测试str_xor编码, 2次xor将还原.
Log:DEBUG("测试str_xor", crypt.xor_str("1234567890", "123", true), crypt.xor_str(crypt.xor_str("1234567890", "123"), "123") == "1234567890")