ngx_Lua 모듈 의 암호 화 api 인터페이스

4159 단어 LuaNginxngx_lua

Lua 모듈 에 서 는 다양한 문자열 암호 화 알고리즘 을 구현 하 는 API 인 터 페 이 스 를 제공 합 니 다. 주로 다음 과 같 습 니 다.
 
>ngx.crc32_short
 
문법: digest = ngx. crc 32short(str)
이 방법 은 주어진 문자열 str 의 순환 검사 코드 (Cyclic Redundancy Code) 의 요약 을 계산 하 는 것 으로 계 산 된 결 과 는 매우 큰 정수 이다.
 
>ngx.crc32_long
 
문법: digest = ngx. crc 32long(str)
이 방법 은 위의 방법 으로 계산 한 결과 와 일치 하 며, 주로 ngx. crc 32 와 차이 가 있다.short 는 길이 가 30 ~ 60 사이 인 str 의 요약 을 계산 하 는 데 적합 하 며, ngx. crc 32롱 은 길이 가 30 ~ 60 이 넘 는 str 의 요약 을 계산 하기에 더욱 적합 하 다.따라서 어떤 api 를 선택 하여 str 를 계산 하 는 crc32 요약 은 주로 str 의 길이 에 달 려 있다.
 
>ngx.hmac_sha1
 
문법: digest = ngx. hmacsha1(secret_key, str)
이 방법 은 입력 문자열 str 의 HMAC - SHA 1 요약 을 계산 하고 secret 에 따라key 결 과 를 변환 하여 계산 한 결 과 는 바 이 너 리 형식 으로 ngx. encode 를 통 해 얻 을 수 있 습 니 다.base 64 를 비 바 이 너 리 형식의 문자열 로 변환 합 니 다. 예 를 들 어:
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. md5bin(str)
이 방법 은 문자열 str 의 MD5 요약 바 이 너 리 형식 을 되 돌려 줍 니 다. ngx. encode 를 통 해base 64 방법 은 비 바 이 너 리 형식의 문자열 로 변환 하거나, ngx. md5 방법 을 직접 사용 합 니 다.
 
>ngx.sha1_bin
 
문법: digest = ngx. sha1bin(str)
이 방법 은 문자열 str 의 바 이 너 리 형식의 SHA - 1 요약 을 되 돌려 줍 니 다. ngx. encode 를 통 해base 64 방법 은 바 이 너 리 형식 이 아 닌 문자열 로 변환 합 니 다.
다음은 하나의 예 를 보 겠 습 니 다.
         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=
 
(전문 완료)

좋은 웹페이지 즐겨찾기