在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轉換成非二進位制格式的字串,例如:
localkey =
"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
產生的結果如下:
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
hmac: 1gpvtaligfzfsqsd32sz04/3pim=
md5: b80a89b331b307dbef83e2eb90c43481, md5_bin: uaqjszgzb9vvg+lrkmq0gq==
sha1_bin: 2a/wkxlxjz1t3wmnxmui3qump7c=
(全文完)
ngx lua模組中的共享記憶體字典項API
在ngx lua模組中使用共享記憶體字典項相關api的前提條件是已經使用lua shared dict命令定義了乙個字典項物件,該命令的具體用法為 語法 lua shared dict 該命令主要是定義一塊名為name的共享記憶體空間,記憶體大小為size。通過該命令定義的共享記憶體物件對於ngin...
ngx lua模組中的共享記憶體字典項API
在ngx lua模組中使用共享記憶體字典項相關api的前提條件是已經使用lua shared dict命令定義了乙個字典項物件,該命令的具體用法為 語法 lua shared dict 該命令主要是定義一塊名為name的共享記憶體空間,記憶體大小為size。通過該命令定義的共享記憶體物件對於ngin...
ngx Lua模組中的重定向
在nginx中實現重定向可以通過rewrite指令,具體可參考 nginx學習 http rewrite module的rewrite指令 通過lua模組也可以實現同樣的功能,lua模組提供了相關的api來實現重定向的功能,主要有 ngx.exec 語法 ngx.exec uri,args?主要實現...