Categorias:

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

SHA2_BINARY

Retorna um valor binário contendo o resumo da mensagem SHA-2 de N-bits, em que N é o tamanho especificado do resumo de saída.

Sintaxe

SHA2_BINARY(<msg> [, <digest_size>])
Copy

Argumentos

Obrigatório:

msg

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

Opcional:

digest_size

Tamanho (em bits) da saída, correspondente à função específica SHA-2 usada para criptografar a cadeia de caracteres:

224 = SHA-224

256 = SHA-256 (padrão)

384 = SHA-384

512 = SHA-512

SHA-512/224 e SHA-512/256 não são suportados.

Retornos

O tipo de dados do valor retornado é BINARY.

Notas de uso

  • 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 sha2_binary('Snowflake', 384);

--------------------------------------------------------------------------------------------------+
                                   SHA2_BINARY('SNOWFLAKE', 384)                                  |
--------------------------------------------------------------------------------------------------+
 736BD8A53845348830B1EE63A8CD3972F031F13B111F66FFDEC2271A7AE709662E503A0CA305BD50DA8D1CED48CD45D9 |
--------------------------------------------------------------------------------------------------+
Copy

O tipo de dados da saída é BINARY e pode ser armazenado em uma coluna BINARY:

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 (note que para a exibição, a saída é implicitamente convertida em uma forma legível pelo usuário, que neste caso é uma cadeia de caracteres de dígitos hexadecimais):

SELECT v, v_as_sha2_binary
  FROM sha_table
  ORDER BY v;
+-------+------------------------------------------------------------------+
| V     | V_AS_SHA2_BINARY                                                 |
|-------+------------------------------------------------------------------|
| AbCd0 | E1D8BA27889D6782008F495473278C4F071995C5549A976E4D4F93863CE93643 |
+-------+------------------------------------------------------------------+
Copy