Categorias:

Funções de cadeia de caracteres e binários (Hash criptográfico)

SHA1 , SHA1_HEX

Retorna uma cadeia de caracteres codificada em hexadecimal de 40 caracteres contendo o resumo da mensagem SHA-1 de 160 bits.

Estas funções são sinônimas.

Sintaxe

SHA1(<msg>)

SHA1_HEX(<msg>)
Copy

Argumentos

msg

Uma expressão de cadeia de caracteres, a mensagem a ser aplicado hash.

Retornos

O tipo de dados do valor retornado é VARCHAR.

Notas de uso

  • A família SHA1 de funções é fornecida principalmente para compatibilidade retroativa com outros sistemas. Para uma criptografia mais segura, o Snowflake recomenda o uso da família SHA2 de funções.

  • Não usar esta função para criptografar uma mensagem que você precisa descriptografar. Esta função não tem função de descriptografia correspondente. (O comprimento da saída é independente do comprimento da entrada. A saída não tem necessariamente bits suficientes para guardar todas as informações da entrada, de modo que não é possível escrever uma função que possa decifrar todas as entradas válidas possíveis).

    Esta função destina-se a outros fins, como o cálculo de uma soma de verificação para detectar a corrupção de dados.

    Se você precisar criptografar e descriptografar dados, use as seguintes funções:

Exemplos

SELECT sha1('Snowflake');

------------------------------------------+
            SHA1('SNOWFLAKE')             |
------------------------------------------+
 fda76b0bcc1e87cf259b1d1e3271d76f590fb5dd |
------------------------------------------+
Copy

O tipo de dados da saída é cadeia de caracteres (VARCHAR) e pode ser armazenado em uma coluna VARCHAR:

Criar e preencher uma tabela:

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

Aqui estão a consulta e a saída:

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 |
+-------+------------------------------------------+------------------------------------------+
Copy