SHA1_BINARY

SHA1_BINARY

SHA1 해시를 바이너리 값으로 돌려주는 함수예요. 입력 메시지를 160비트(20바이트) SHA-1 메시지 다이제스트로 만들고, 그 결과를 BINARY 타입으로 반환해요. 텍스트나 hex 문자열로 받고 싶다면 SHA1, SHA1_HEX와 함께 비교해서 쓰면 돼요.

출처: 공식 문서

본문

입력 메시지에 대한 160비트 SHA-1 메시지 다이제스트를 담은 20바이트 바이너리를 반환합니다.

구문 (Syntax)

SHA1_BINARY(<msg>)

인자 (Arguments)

msg

해시할 메시지인 문자열 표현식입니다.

반환값 (Returns)

반환값의 데이터 타입은 BINARY입니다.

사용 참고 (Usage notes)

  • SHA1 함수 계열은 주로 다른 시스템과의 하위 호환성을 위해 제공됩니다. 더 안전한 암호화가 필요하면 Snowflake는 SHA2 함수 계열을 사용할 것을 권장합니다.
  • 복호화해야 할 메시지를 암호화하는 용도로는 이 함수를 쓰지 마세요. 이 함수에는 대응하는 복호화 함수가 없습니다. (출력 길이는 입력 길이와 무관하며, 출력이 입력의 모든 정보를 담을 만큼 충분한 비트를 가지지 않으므로, 모든 유효 입력을 복호화할 수 있는 함수를 작성하는 것은 불가능합니다.) 이 함수는 데이터 손상을 감지하기 위한 체크섬 계산 같은 다른 목적을 위한 것입니다.
  • 데이터를 암호화·복호화해야 한다면 다음 함수를 사용하세요:

예제 (Examples)

SELECT sha1_binary('Snowflake');

------------------------------------------+
         SHA1_BINARY('SNOWFLAKE')         |
------------------------------------------+
 FDA76B0BCC1E87CF259B1D1E3271D76F590FB5DD |
------------------------------------------+

출력의 데이터 타입은 BINARY이며, BINARY 컬럼에 저장할 수 있습니다:

테이블을 만들고 채웁니다:

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)
    ;

다음은 쿼리와 출력입니다 (표시를 위해 출력이 사용자가 읽기 좋은 형태, 여기서는 16진수 문자열로 암시적으로 캐스팅됩니다):

SELECT v, v_as_sha1_binary
  FROM sha_table
  ORDER BY v;
+-------+------------------------------------------+
| V     | V_AS_SHA1_BINARY                         |
|-------+------------------------------------------|
| AbCd0 | 9DDB991863D53B35A52C490DB256207C776AB8D8 |
+-------+------------------------------------------+

더 알아보기 (Learn more)