openresty lua-resty-string md5 sha aes random string
安装 https://github.com/openresty/lua-resty-string
$ sudo opm get openresty/lua-resty-string
$ ls -al /usr/local/openresty/site/lualib/resty/
总用量 100
drwxr-xr-x 3 root root 4096 9月 16 20:47 .
drwxr-xr-x 3 root root 4096 9月 8 07:38 ..
-rw-r--r-- 1 root root 6129 9月 16 20:47 aes.lua
-rw-r--r-- 1 root root 1150 9月 11 19:10 http_headers.lua
-rw-r--r-- 1 root root 29686 9月 11 19:10 http.lua
drwxr-xr-x 2 root root 4096 9月 10 21:32 lrucache
-rw-r--r-- 1 root root 5727 9月 10 21:32 lrucache.lua
-rw-r--r-- 1 root root 1211 9月 16 20:47 md5.lua
-rw-r--r-- 1 root root 616 9月 16 20:47 random.lua
-rw-r--r-- 1 root root 1192 9月 16 20:47 sha1.lua
-rw-r--r-- 1 root root 1045 9月 16 20:47 sha224.lua
-rw-r--r-- 1 root root 1221 9月 16 20:47 sha256.lua
-rw-r--r-- 1 root root 1045 9月 16 20:47 sha384.lua
-rw-r--r-- 1 root root 1359 9月 16 20:47 sha512.lua
-rw-r--r-- 1 root root 236 9月 16 20:47 sha.lua
-rw-r--r-- 1 root root 698 9月 16 20:47 string.lua
可以看出目录下多出了这几个文件:aes.lua md5.lua random.lua sha.lua sha1.lua sha224.lua sha256.lua sha384.lua sha512.lua string.lua
测试文件 test.lua
local resty_sha1 = require "resty.sha1"
local sha1 = resty_sha1:new()
if not sha1 then
ngx.say("failed to create the sha1 object")
return
end
local ok = sha1:update("hello, ")
if not ok then
ngx.say("failed to add data")
return
end
ok = sha1:update("world")
if not ok then
ngx.say("failed to add data")
return
end
local digest = sha1:final() -- binary digest
local str = require "resty.string"
ngx.say("sha1: ", str.to_hex(digest))
-- output: "sha1: b7e23ec29af22b0b4e41da31e868d57226121c84"
local resty_md5 = require "resty.md5"
local md5 = resty_md5:new()
if not md5 then
ngx.say("failed to create md5 object")
return
end
local ok = md5:update("hel")
if not ok then
ngx.say("failed to add data")
return
end
ok = md5:update("lo")
if not ok then
ngx.say("failed to add data")
return
end
local digest = md5:final()
local str = require "resty.string"
ngx.say("md5: ", str.to_hex(digest))
-- yield "md5: 5d41402abc4b2a76b9719d911017c592"
local resty_sha224 = require "resty.sha224"
local str = require "resty.string"
local sha224 = resty_sha224:new()
ngx.say(sha224:update("hello"))
local digest = sha224:final()
ngx.say("sha224: ", str.to_hex(digest))
local resty_sha256 = require "resty.sha256"
local str = require "resty.string"
local sha256 = resty_sha256:new()
ngx.say(sha256:update("hello"))
local digest = sha256:final()
ngx.say("sha256: ", str.to_hex(digest))
local resty_sha512 = require "resty.sha512"
local str = require "resty.string"
local sha512 = resty_sha512:new()
ngx.say(sha512:update("hello"))
local digest = sha512:final()
ngx.say("sha512: ", str.to_hex(digest))
local resty_sha384 = require "resty.sha384"
local str = require "resty.string"
local sha384 = resty_sha384:new()
ngx.say(sha384:update("hel"))
ngx.say(sha384:update("lo"))
local digest = sha384:final()
ngx.say("sha384: ", str.to_hex(digest))
local resty_random = require "resty.random"
local str = require "resty.string"
local random = resty_random.bytes(16)
-- generate 16 bytes of pseudo-random data
ngx.say("pseudo-random: ", str.to_hex(random))
local resty_random = require "resty.random"
local str = require "resty.string"
local strong_random = resty_random.bytes(16,true)
-- attempt to generate 16 bytes of
-- cryptographically strong random data
while strong_random == nil do
strong_random = resty_random.bytes(16,true)
end
ngx.say("random: ", str.to_hex(strong_random))
local aes = require "resty.aes"
local str = require "resty.string"
local aes_128_cbc_md5 = aes:new("AKeyForAES")
-- the default cipher is AES 128 CBC with 1 round of MD5
-- for the key and a nil salt
local encrypted = aes_128_cbc_md5:encrypt("Secret message!")
ngx.say("AES 128 CBC (MD5) Encrypted HEX: ", str.to_hex(encrypted))
ngx.say("AES 128 CBC (MD5) Decrypted: ", aes_128_cbc_md5:decrypt(encrypted))
local aes = require "resty.aes"
local str = require "resty.string"
local aes_256_cbc_sha512x5 = aes:new("AKeyForAES-256-CBC",
"MySalt!!", aes.cipher(256,"cbc"), aes.hash.sha512, 5)
-- AES 256 CBC with 5 rounds of SHA-512 for the key
-- and a salt of "MySalt!!"
-- Note: salt can be either nil or exactly 8 characters long
local encrypted = aes_256_cbc_sha512x5:encrypt("Really secret message!")
ngx.say("AES 256 CBC (SHA-512, salted) Encrypted HEX: ", str.to_hex(encrypted))
ngx.say("AES 256 CBC (SHA-512, salted) Decrypted: ",
aes_256_cbc_sha512x5:decrypt(encrypted))
local aes = require "resty.aes"
local str = require "resty.string"
local aes_128_cbc_with_iv = assert(aes:new("1234567890123456", nil, aes.cipher(128,"cbc"), {iv="1234567890123456"}))
-- AES 128 CBC with IV and no SALT
local encrypted = aes_128_cbc_with_iv:encrypt("Really secret message!")
ngx.say("AES 128 CBC (WITH IV) Encrypted HEX: ", str.to_hex(encrypted))
ngx.say("AES 128 CBC (WITH IV) Decrypted: ", aes_128_cbc_with_iv:decrypt(encrypted))
测试
$ resty test.lua
sha1: b7e23ec29af22b0b4e41da31e868d57226121c84
md5: 5d41402abc4b2a76b9719d911017c592
true
sha224: ea09ae9cc6768c50fcee903ed054556e5bfc8347907f12598aa24193
true
sha256: 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
true
sha512: 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
true
true
sha384: 59e1748777448c69de6b800d7a33bbfb9ff1b463e44354c3553bcdb9c666fa90125a3c79f90397bdf5f6a13de828684f
pseudo-random: 4c1f6d82cba1d0441b8f96c6cc0a8183
random: 5558eeac062e63c4304c40532129d9de
AES 128 CBC (MD5) Encrypted HEX: 6d87d6b11c6bf0dcb76d1aa611520b3c
AES 128 CBC (MD5) Decrypted: Secret message!
AES 256 CBC (SHA-512, salted) Encrypted HEX: 02997c9c6eb26af1a335ed8c11d53df3bf127086ecbba02fb73391bcf385bd2c
AES 256 CBC (SHA-512, salted) Decrypted: Really secret message!
AES 128 CBC (WITH IV) Encrypted HEX: f9fa30df0325a7680327842c6a232e7838f7149d80cb8a669cf503a45afc2fa5
AES 128 CBC (WITH IV) Decrypted: Really secret message!
openresty lua-resty-string md5 sha aes random string的更多相关文章
- Java http数据MD5、AES、DES加密
一,数据加密 1.提供了,md5,Hex,Sha等不可逆算法加密 2.AES加密,此加密方式瘦平台影响较重,所以只适合同类平台加密解密 3.DES自定义加密,跨平台,兼容性好 1.org.apache ...
- Java Base64、HMAC、SHA1、MD5、AES DES 3DES加密算法
● BASE64 严格地说,属于编码格式,而非加密算法 ● MD5(Message Digest algorithm 5,信息摘要算法) ● SHA(Secure Hash Algo ...
- BASE64,MD5,SHA,HMAC加密與解密算法(java)
package com.ice.webos.util.security; import java.io.UnsupportedEncodingException; import java.math.B ...
- 如何生成安全的密码 Hash:MD5, SHA, PBKDF2, BCrypt 示例
密码 Hash 值的产生是将用户所提供的密码通过使用一定的算法计算后得到的加密字符序列.在 Java 中提供很多被证明能有效保证密码安全的 Hash 算法实现,我将在这篇文章中讨论其中的部分算法. 需 ...
- 微信小程序下可以使用的MD5以及AES加密(通用)
两段代码都来自网络 ,在小程序下的加解密结果与CS/BS等算出的结果都一致,支持汉字. 一.MD5: var rotateLeft = function (lValue, iShiftBits) { ...
- openresty+lua+kafka方案与Tomcat接口并发度对比分析
1.openresty+lua+kafka 1.1 openresty+lua+kafka方案 之前的项目基于nginx反向代理后转发到Tomcat的API接口进行业务处理,然后将json数据打入ka ...
- OpenResty Lua钩子调用完整流程
前面一篇文章介绍了Openresty Lua协程调度机制,主要关心的是核心调度函数run_thread()内部发生的事情,而对于外部的事情我们并没有涉及.本篇作为其姊妹篇,准备补上剩余的部分.本篇将通 ...
- Java 消息摘要 散列 MD5 SHA
package xxx.common.util; import java.math.BigInteger; import java.security.MessageDigest; import jav ...
- Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC
Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha 加密解密,曾经是我一 ...
随机推荐
- Maven之--安装nexus 私服
开始搜索下载了,nexus3.19版本,下来之后,建立一个maven 骨架过程 quickstart,提示没有lgf4j依赖和和maven插件都没有,开始搜索什么原因,猜想是nexus没有索引,右搜索 ...
- OOP-Klass模型 简略
class Model { public static int a = 1; public int b; public Model(int b) { this.b = b; } } public st ...
- (数据科学学习手札125)在Python中操纵json数据的最佳方式
本文示例代码及文件已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 在日常使用Python的过程中,我们经常会 ...
- 【GCC编译器】将GIMPLE序列划分成基本块(Basic block),并构造控制流图
1. 首先介绍测试用例,这是一个简单的if-then-else结构,输入为 int 类型的单变量,输出为 int 类型的结果.如果条件 a < 1 成立,则将输入直接返回:如果条件不成立,则返回 ...
- 20初识前端HTML(1)
1 .HTML 1.1 网页的组成 文字 图片 链接 等元素构成.除了这些元素之外 网页中还可以包含音频 视频 等 1.2 WEB前端开发的流程 现在主流的开发流程: 前后端分离的开发模式. 美工:p ...
- WPF Combox实现下拉多选,可选中多个值
自定义多选MultiCombox,可以实现下拉列表多选 using System; using System.Collections.Generic; using System.Collections ...
- template.js模板工具案例
案例一 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset=&qu ...
- [C++]-map和unordered_map
转自:https://blog.csdn.net/BillCYJ/article/details/78985895 头文件不同 map: #include < map > unordere ...
- [C++]-map 映射
map用来存储排序后的由键和值组成的项的集合.键必须唯一,不同的键可以对应同一个值,在map中键保持逻辑排序后的顺序(以键为标准). 代码 #include<iostream> #incl ...
- Linux命令(九)之安装mysql
.personSunflowerP { background: rgba(51, 153, 0, 0.66); border-bottom: 1px solid rgba(0, 102, 0, 1); ...