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 加密解密,曾经是我一 ... 
随机推荐
- 【论文集合】机器翻译NMT中数据打分和数据选择的经典方法
			根据Survey of Data-Selection Methods in Statistical Machine Translation的总结,MT中的数据选择分类图如下: 使用场景 数据使用的场景 ... 
- Hadoop 3.1.1 - 概述 - 单节点安装
			Hadoop: 单节点安装 目标 本文描述了如何安装和配置单机的 Hadoop,这样你可以使用 Hadoop MapReduce 和 Hadoop 分布式文件系统(HDFS)快速地尝试简单的操作. 前 ... 
- 将几张图片合并为一张图片,返回byte数组
			需求:通过url数组下载图片,再竖直合成一张新的图片,具体java代码如下 1 /** 2 * 竖直合并图片 3 * 4 * @param urls 5 * @return 6 */ 7 public ... 
- 八数码难题之 A* 算法
			人生第一个A*算法-好激动-- 八数码难题--又称八数码水题,首先要理解一些东西: 1.状态可以转化成整数,比如状态: 1 2 3 4 5 6 7 8 0 可以转化成:123456780这个整数 2. ... 
- 什么是CIDR?
			英文缩写: CIDR (Classless InterDomain Routing) 中文译名: 无类别域间路由选择 IP地址有"类"的概念,/8掩码是A类,/16掩码是B类,/2 ... 
- Jarvis OJ部分逆向
			Jarvis OJ部分逆向题解 很久没有写博客了,前天上Jarvis OJ刷了几道逆向,保持了一下感觉.都是简单题目,写个writeup记录一下. easycrackme int __cdecl ma ... 
- .user.ini和.htaccess
			.user.ini .user.ini的使用条件 (1)nginx/apache/IIS,只要是以fastcgi运行的php都可以用这个方法 php配置访问级别 不同的php配置项根据其访问级别具有不 ... 
- [TensorFow2.0]-MNIST手写数字识别
			本人人工智能初学者,现在在学习TensorFlow2.0,对一些学习内容做一下笔记.笔记中,有些内容理解可能较为肤浅.有偏差等,各位在阅读时如有发现问题,请评论或者邮箱(右侧边栏有邮箱地址)提醒. 若 ... 
- Access, Modify, Change Time of Linux File
			All these 3 time can be viewed by "stat " command. Access time is influenced by read opera ... 
- 在 CSS 中表示颜色的hex code方法和rgb方法
			hexadecimal code(十六进制编码),简写为 hex code. 我们通常使用 decimals,也就是十进制数字,它对每一位数字使用符号0到9来表示.Hexadecimals (或 he ... 
