ngx Lua模組中的加密api介面

2021-06-23 03:15:49 字數 1885 閱讀 1436

在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

產生的結果如下:

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?主要實現...