SHA1, SHA1_HEX
SHA1, SHA1_HEX (SHA-1 해시)
160비트 SHA-1 메시지 다이제스트(message digest)를 담은 40자 16진수 인코딩 문자열을 반환해요.
본문
이 함수들은 동의어(synonymous)예요.
구문
SHA1(<msg>)
SHA1_HEX(<msg>)
인자
msg
해시할 메시지인 문자열 표현식이에요.
반환 값
반환 값의 데이터 타입은 VARCHAR예요.
사용 시 참고 사항
-
SHA1 함수 계열은 주로 다른 시스템과의 하위 호환성을 위해 제공돼요. 더 안전한 암호화를 위해 Snowflake는 SHA2 함수 계열 사용을 권장해요.
-
복호화해야 하는 메시지를 암호화하는 데 이 함수를 사용하지 마세요. 이 함수에는 이에 대응하는 복호화 함수가 없어요. (출력의 길이는 입력의 길이와 무관해요. 출력이 입력의 모든 정보를 담기에 충분한 비트를 갖지 않을 수 있으므로, 가능한 모든 유효 입력을 복호화할 수 있는 함수를 작성하는 것은 불가능해요.)
이 함수는 데이터 손상을 감지하는 체크섬(checksum) 계산 같은 다른 목적으로 사용돼요.
데이터를 암호화하고 복호화해야 한다면 다음 함수를 사용하세요.
-
ENCRYPT 및 DECRYPT
-
ENCRYPT_RAW 및 DECRYPT_RAW
-
예시
SELECT sha1('Snowflake');
------------------------------------------+
SHA1('SNOWFLAKE') |
------------------------------------------+
fda76b0bcc1e87cf259b1d1e3271d76f590fb5dd |
------------------------------------------+
출력의 데이터 타입은 문자열(VARCHAR)이며 VARCHAR 열에 저장할 수 있어요.
테이블을 만들고 채워요.
CREATE TABLE sha_table(
v VARCHAR,
v_as_sha1 VARCHAR,
v_as_sha1_hex VARCHAR,
v_as_sha1_binary BINARY,
v_as_sha2 VARCHAR,
v_as_sha2_hex VARCHAR,
v_as_sha2_binary BINARY
);
INSERT INTO sha_table(v) VALUES ('AbCd0');
UPDATE sha_table SET
v_as_sha1 = SHA1(v),
v_as_sha1_hex = SHA1_HEX(v),
v_as_sha1_binary = SHA1_BINARY(v),
v_as_sha2 = SHA2(v),
v_as_sha2_hex = SHA2_HEX(v),
v_as_sha2_binary = SHA2_BINARY(v)
;
다음은 쿼리와 출력이에요.
SELECT v, v_as_sha1, v_as_sha1_hex
FROM sha_table
ORDER BY v;
+-------+------------------------------------------+------------------------------------------+
| V | V_AS_SHA1 | V_AS_SHA1_HEX |
|-------+------------------------------------------+------------------------------------------|
| AbCd0 | 9ddb991863d53b35a52c490db256207c776ab8d8 | 9ddb991863d53b35a52c490db256207c776ab8d8 |
+-------+------------------------------------------+------------------------------------------+