ngx_Lua模块中的加密api接口
? 在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 { ? 输出结果: crc_32_short:1560312840,crc_32_long: 1560312840 ? (全文完) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |