加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

ngx_Lua模块中的加密api接口

发布时间:2020-12-14 22:08:05 所属栏目:大数据 来源:网络整理
导读:? 在Lua模块中提供了多种用于是实现各种字符串加密算法的API接口,主要包括: ? ngx.crc32_short ? 语法: digest= ngx.crc32_short(str) 该方法主要是计算给定字符串str的循环校验码(Cyclic Redundancy Code)的摘要, 计算出来的结果是一个很大的整数 ? n

?

在Lua模块中提供了多种用于是实现各种字符串加密算法的API接口,主要包括:

?

>ngx.crc32_short

?

语法:digest= ngx.crc32_short(str)

该方法主要是计算给定字符串str的循环校验码(Cyclic Redundancy Code)的摘要,计算出来的结果是一个很大的整数

?

>ngx.crc32_long

?

语法:digest= ngx.crc32_long(str)

该方法与上面的方法计算得到的结果是一致的,主要区别在于ngx.crc32_short适合用于计算长度介于30~60之间的str的摘要,而ngx.crc32_long更适合计算长度超过30~60的str的摘要。因此,到底选择哪一个api进行计算str的crc_32摘要,主要取决于str的长度。

?

>ngx.hmac_sha1

?

语法:digest = ngx.hmac_sha1(secret_key,str)

该方法主要用于计算输入字符串str的HMAC-SHA1的摘要,并根据secret_key对结果进行转换,计算后得到的结果是二进制格式的,可以通过ngx.encode_base64转换成非二进制格式的字符串,例如:

local key = "thisisverysecretstuff"
local src = "some string we want to sign"
local digest = ngx.hmac_sha1(key,src)
ngx.say(ngx.encode_base64(digest))

?

>ngx.md5

?

语法:digest = ngx.md5(str)

该方法将返回字符串str的MD5摘要的16进制的表示,如下:

location = /md5 {
    content_by_lua 'ngx.say(ngx.md5("hello"))';
}

?

产生的结果如下:

5d41402abc4b2a76b9719d911017c592

?

>ngx.md5_bin

?

语法:digest = ngx.md5_bin(str)

该方法将返回字符串str的MD5摘要的二进制格式,可以通过ngx.encode_base64方法转换成非二进制格式的字符串,或者直接使用ngx.md5方法

?

>ngx.sha1_bin

?

语法:digest = ngx.sha1_bin(str)

该方法将返回字符串str的二进制格式的SHA-1摘要,可以通过ngx.encode_base64方法转换成非二进制格式的字符串。

下面来看一个例子:

???????? location /encryption {
???????????? content_by_lua '
???????????????? local crc_32s,crc_32l
???????????????? local key = "it is my secret"
???????????????? local str = "encrypted hello yuefei"
???????????????? crc_32s = ngx.crc32_short(str)
???????????????? crc_32l = ngx.crc32_long(str)
???????????????? local hmac = ngx.hmac_sha1(key,str)
???????????????? local md5 = ngx.md5(str)
???????????????? local md5_bin = ngx.md5_bin(str)
???????????????? local sha1_bin = ngx.sha1_bin(str)
???????????????? ngx.say("crc_32_short:",crc_32s,",crc_32_long: ",crc_32l)
???????????????? ngx.say("hmac: ",ngx.encode_base64(hmac))
???????????????? ngx.say("md5: ",md5,md5_bin: ",ngx.encode_base64(md5_bin))
???????????????? ngx.say("sha1_bin: ",ngx.encode_base64(sha1_bin))
???????????? ';
???????? }

?

输出结果:

crc_32_short:1560312840,crc_32_long: 1560312840
hmac: 1gpvtAliGFZfSqSD32Sz04/3PiM=
md5: b80a89b331b307dbef83e2eb90c43481,md5_bin: uAqJszGzB9vvg+LrkMQ0gQ==
sha1_bin: 2A/wkXlXjz1t3wmNxMUi3QuMP7c=

?

(全文完)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读