해시 함수
hash 모듈은 암호화 해시, HMAC 값, PBKDF2 파생 키, 비암호화 FNV-1 해시를 계산합니다. 이 페이지는 독립 호출을 설명하는 API 참조입니다. 리터럴 입력은 성공적인 사용을 보여 줍니다. 데이터, 비밀, 비밀번호, salt가 애플리케이션에서 제공되면 결과를 사용하기 전에 문서화된 두 번째 error 반환을 확인하고 처리하세요.
해시는 암호화가 아니며 엔트로피가 낮은 입력을 숨기지 않습니다. 비밀번호, HMAC 키, 파생 키, 비밀에 의존하는 원시 다이제스트를 로그에 기록하지 마세요. 새 메시지 인증 설계에는 HMAC-SHA256 또는 HMAC-SHA512를 사용하고 비밀번호 검증자에는 고유한 임의 salt와 PBKDF2를 사용하세요.
로드
local hash = require("hash")
암호화 해시
MD5
MD5는 충돌 저항성이 없습니다. 보안 판단이 아니라 MD5가 필요한 프로토콜과의 호환성에만 사용하세요.
local hex = hash.md5("data")
local raw = hash.md5("data", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 해시할 데이터 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
SHA-1
SHA-1은 충돌 저항성이 없습니다. 보안 판단이 아니라 SHA-1이 필요한 프로토콜과의 호환성에만 사용하세요.
local hex = hash.sha1("data")
local raw = hash.sha1("data", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 해시할 데이터 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
SHA-256
local hex = hash.sha256("data")
local raw = hash.sha256("data", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 해시할 데이터 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
SHA-512
local hex = hash.sha512("data")
local raw = hash.sha512("data", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 해시할 데이터 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
HMAC
HMAC-MD5
HMAC-MD5는 이를 요구하는 프로토콜과의 호환성에만 사용하세요. 새 설계에는 HMAC-SHA256 또는 HMAC-SHA512를 권장합니다.
local hex = hash.hmac_md5("message", "secret")
local raw = hash.hmac_md5("message", "secret", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 인증할 메시지 |
secret |
string | 비밀 키 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
HMAC-SHA1
HMAC-SHA1은 이를 요구하는 프로토콜과의 호환성에만 사용하세요. 새 설계에는 HMAC-SHA256 또는 HMAC-SHA512를 권장합니다.
local hex = hash.hmac_sha1("message", "secret")
local raw = hash.hmac_sha1("message", "secret", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 인증할 메시지 |
secret |
string | 비밀 키 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
HMAC-SHA256
local hex = hash.hmac_sha256("message", "secret")
local raw = hash.hmac_sha256("message", "secret", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 인증할 메시지 |
secret |
string | 비밀 키 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
HMAC-SHA512
local hex = hash.hmac_sha512("message", "secret")
local raw = hash.hmac_sha512("message", "secret", true)
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 인증할 메시지 |
secret |
string | 비밀 키 |
raw |
boolean? | 16진수 대신 원시 바이트 반환 |
반환: string, error
비암호화 해시
FNV-1 32비트
해시 테이블과 파티셔닝 같은 용도를 위한 해시를 계산합니다.
local n = hash.fnv32("data")
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 해시할 데이터 |
반환: number, error
FNV-1 64비트
해시 테이블과 파티셔닝 같은 용도에 더 넓은 해시를 계산해 충돌 가능성을 줄입니다.
local n = hash.fnv64("data")
| 매개변수 | 타입 | 설명 |
|---|---|---|
data |
string | 해시할 데이터 |
반환: number, error
키 파생
PBKDF2
local key, err = hash.pbkdf2(password, salt, iterations, key_length)
local key, err = hash.pbkdf2(password, salt, iterations, key_length, "sha512")
| 파라미터 | 타입 | 설명 |
|---|---|---|
password |
string | 비밀번호/패스프레이즈 (비어 있으면 안 됨) |
salt |
string | 솔트 값 (비어 있으면 안 됨) |
iterations |
integer | 반복 횟수 (1 ~ 10,000,000) |
key_length |
integer | 원하는 키 길이 (바이트) |
hash |
string? | sha256 또는 sha512 (기본값: sha256) |
반환: string, error (원시 키 바이트)
에러
| 조건 | 종류 | 재시도 가능 |
|---|---|---|
| 입력이 문자열이 아님 | errors.INVALID |
아니오 |
| 비밀이 문자열이 아님 (HMAC) | errors.INVALID |
아니오 |
| 빈 비밀번호/솔트, 0 이하이거나 과도한 반복 횟수, 지원하지 않는 해시 (PBKDF2) | errors.INVALID |
아니오 |
오류 작업 방법은 오류 처리를 참고하세요.