lua-resty-mcrypt
用于 ngx-lua 的 Mcrypt 包装器,使用 luajit ffi api
$ opm get wd/lua-resty-mcrypt
名称
lua-resty-mcrypt - 用于 ngx-lua 的 Mcrypt 包装器,使用 luajit 的 ffi api。
状态
此库在生产环境(CentOS 版本 6.4)中仅使用过 'blowfish' 密码和 'cbc' 模式。因此,如果您想在您的环境中使用,则需要进行更多测试。欢迎提交拉取请求。
描述
此库需要 libmcrypt.so,您可以在 CentOS 中使用 yum install libmcrypt
安装。还需要 LuaJIT。
摘要
local mcrypt = require 'resty.mcrypt'
local m = mcrypt:new({cipher = 'blowfish', mode = 'cbc'})
local key = 'DE16DCCC-C890-443A-9367-48107AD7DBA1'
local iv = '1A695BD0-DFD0-41C8-8F06-528910B870D2'
local raw = 'BF1B5128-287B-410F-9455-A20CA01C7FC5'
local encrypted_raw = m:encrypt(iv, key, raw)
local decrypted_raw = m:decrypt(iv, key, encrypted_raw)
print(decrypted_raw == raw)
m:close()
方法
要加载此库,
您需要在 ngx_lua 的
lua_package_path
指令中指定此库的路径。例如,lua_package_path "/path/to/lua-resty-rsa/lib/?.lua;;";
。您可以使用 require 将库加载到一个本地 Lua 变量中
local rsa = require "resty.rsa"
new
mcrypt:new({cipher = cipher, mode = mode})
encrypt
encrypted = m:encrypt(iv, key, raw)
decrypt
raw = m:decrypt(iv, key, encrypted)
测试
您可以在 t/test.lua
中运行测试文件。测试文件只是一个简单的 lua 脚本。
$ /path/to/openresty/luajit/bin/luajit* t/test.lua
参考链接
https://linux.die.net/man/3/mcrypt
https://php.ac.cn/manual/en/mcrypt.ciphers.php
待办事项
不支持流模式
作者
王东(wd) https://wdicc.com
版权和许可
此模块根据 MIT 许可证授权。
版权所有 (C) 2014-2014,作者 王东(wd) https://wdicc.com 。
保留所有权利。
在满足以下条件的情况下,允许以源代码和二进制形式重新分发和使用,无论是否修改:
源代码的再分发必须保留上述版权声明、此条件列表和以下免责声明。
二进制形式的再分发必须在随分发提供的文档和/或其他材料中复制上述版权声明、此条件列表和以下免责声明。
本软件由版权持有人和贡献者“按原样”提供,并且不提供任何明示或暗示的保证,包括但不限于适销性和特定用途适用性的暗示保证。在任何情况下,版权持有人或贡献者均不对任何直接、间接、偶然、特殊、惩戒性或后果性损害(包括但不限于替代商品或服务的采购;使用、数据或利润损失;或业务中断)负责,无论这些损害是如何造成的以及基于何种责任理论,无论是合同、严格责任还是侵权行为(包括疏忽或其他原因),即使已被告知可能发生此类损害。
作者
王东 (wd)
许可证
mit
依赖项
luajit
版本
-
wd/lua-resty-mcrypt 0.01用于 ngx-lua 的 Mcrypt 包装器,使用 luajit ffi api 2016-12-13 08:52:52