21.암호 함수

Edit

21.1난수 생성

21.1.1rand

문법

rand(경계값)

경계값보다 작은 임의의 음이 아닌 정수를 반환합니다.

경계값

0보다 큰 정수를 입력합니다. rand 함수는 [0, 경계값) 범위의 숫자를 임의로 반환합니다.

사용 예

rand(1000) => 0~999의 임의의 값

21.1.2randbytes

문법

randbytes(길이)

지정된 길이만큼 임의의 값으로 채워진 바이너리를 반환합니다.

길이

바이너리 길이 상수를 입력합니다. 1에서 10,240까지의 길이만 허용됩니다.

사용 예

randbytes(16) => 바이너리 값 예시 f6b9291695db68b9c209ed83ffce1006

21.2BASE64 변환

21.2.1tobase64

문법

tobase64(바이너리표현식)
바이너리 표현식

바이너리 값으로 평가되는 표현식을 입력합니다.

사용 예

tobase64(encode("helloworld")) => "aGVsbG93b3JsZA=="

21.2.2frombase64

문법

frombase64(BASE64문자열)

BASE64 알고리즘으로 인코딩한 문자열을 바이너리로 변환하여 반환합니다.

BASE64 문자열

BASE64 알고리즘을 이용하여 인코딩된 문자열

사용 예

decode(frombase64("aGVsbG93b3JsZA==")) => "helloworld"

21.3바이너리 변환

21.3.1encode

문법

encode(문자열표현식, [문자집합])

문자열을 지정된 인코딩을 이용하여 바이너리로 변환한 값을 반환합니다.

문자열 표현식

문자열로 평가되는 표현식을 입력합니다. 문자열이 아닌 타입의 값이 전달되거나, null인 경우에는 null을 반환합니다.

문자집합

문자집합 이름을 입력합니다. 미입력 시 utf-8이 기본값으로 지정됩니다.

사용 예

encode("helloworld") => 바이너리 68656c6c6f776f726c64
tobase64(encode("helloworld")) => "aGVsbG93b3JsZA=="

21.3.2decode

문법

decode(바이너리표현식, [문자집합])

바이너리 값을 지정된 인코딩으로 해석하여 문자열 개체를 반환합니다.

바이너리 표현식

바이너리로 평가되는 표현식을 입력합니다. 바이너리가 아닌 타입의 값이 전달되거나, null인 경우에는 null을 반환합니다.

문자집합

문자집합 이름을 입력합니다. 미입력 시 utf-8이 기본값으로 지정됩니다.

사용 예

decode(frombase64("aGVsbG93b3JsZA==")) => "helloworld"

21.4암복호화 및 해시

21.4.1encrypt

문법

encrypt(암호알고리즘, 키표현식, 데이터표현식, [IV표현식])

바이너리 값을 지정된 알고리즘과 키로 암호화하여 반환합니다.

암호 알고리즘

암호 알고리즘 문자열을 입력합니다. "AES" 입력 시 AES 128비트를 의미합니다.

키 표현식

지정한 암호 알고리즘에 일치하는 크기의 바이너리 키를 입력합니다.

데이터 표현식

암호화할 바이너리 데이터를 입력합니다.

IV 표현식

CBC 모드 등 IV를 사용하여 암호화 할 경우, IV 바이너리 값을 입력합니다.

사용 예

tobase64(encrypt("AES", frombase64("mRcOlK9V47rjVL/RBYQYRw=="), 
        binary("helloworld"))) => "2W3kHbN95/HUSTE/bJt/8g=="

21.4.2decrypt

문법

decrypt(암호알고리즘, 키표현식, 데이터표현식, [IV표현식])

암호화된 바이너리 값을 지정된 알고리즘과 키로 복호화하여 반환합니다.

암호 알고리즘

암호 알고리즘 문자열을 입력합니다. "AES" 입력 시 AES 128비트를 의미합니다.

키 표현식

지정한 암호 알고리즘에 일치하는 크기의 바이너리 키를 입력합니다.

데이터 표현식

복호화할 암호화된 바이너리 데이터를 입력합니다.

IV 표현식

CBC 모드 등 IV를 사용하여 암호화 한 경우, IV 바이너리 값을 입력합니다.

사용 예

위 예제에서 "helloworld"를 encrypt한 결과를 decrypt합니다.

decode(decrypt("AES",frombase64("mRcOlK9V47rjVL/RBYQYRw=="),
        frombase64("2W3kHbN95/HUSTE/bJt/8g==")))
        => "helloworld"

21.4.3hash

문법

hash(해시알고리즘, 바이너리표현식)

알고리즘 유형과 바이너리 값을 받아 단방향 해시 알고리즘을 수행한 결과를 바이너리 값으로 반환합니다.

해시알고리즘

md5, sha1, sha256, sha384, sha512 중 하나의 알고리즘을 지원합니다.

사용 예

1) md5 해시

hash("md5", binary("hello world")) => 5eb63bbbe01eeed093cb22bb8f5acdc3

2) sha1 해시

hash("sha1", binary("hello world")) => 2aae6c35c94fcfb415dbe95f408b9ce91ee846ed

3) sha256 해시

hash("sha256", binary("hello world")) => 
    b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9

4) sha384 해시

hash("sha384", binary("hello world")) => 
    fdbd8e75a67f29f701a4e040385e2e23986303ea10239211af907fcbb83578b3e417cb71ce646efd0819dd8c088de1bd

5) sha512 해시

hash("sha512", binary("hello world")) => 
    309ecc489c12d6eb4cc40f50c902f2b4d0ed77ee511a7c7a9bcd3ca86d4cd86f989dd35bc5ff499670da34255b45b0cfd830e81f605dcf7dc5542e93ae9cd76f

6) 잘못된 입력값이 들어오는 경우

hash("md5", "hello world") => null
hash("sha1", null) => null
hash("sha1", 1234) => null
Count of comments [0]