Catégories :

Fonctions de chaîne et fonctions binaires (Hachage cryptographique)

SHA2 , SHA2_HEX

Renvoie une chaîne codée en hexadécimal contenant le résumé de message SHA-2 de N bits, où N est la taille de résumé de la sortie spécifiée.

Ces fonctions sont synonymes.

Syntaxe

SHA2( <msg> [, <digest_size>] )

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

Arguments

Obligatoire :

msg

Une expression de chaîne, le message à hacher

Facultatif :

digest_size

Taille (en bits) de la sortie, correspondant à la fonction spécifique SHA-2 utilisée pour chiffrer la chaîne :

224 = SHA-224

256 = SHA-256 (par défaut)

384 = SHA-384

512 = SHA-512

SHA-512/224 et SHA-512/256 ne sont pas pris en charge.

Renvoie

Le type de données de la valeur renvoyée est VARCHAR.

Notes sur l’utilisation

  • N’utilisez pas cette fonction pour chiffrer un message que vous devrez déchiffrer. Cette fonction n’a pas de fonction de déchiffrage correspondante. (La longueur de la sortie est indépendante de la longueur de l’entrée. La sortie n’a pas nécessairement assez de bits pour contenir toutes les informations de l’entrée, il n’est donc pas possible d’écrire une fonction qui peut déchiffrer toutes les entrées valides possibles).

    Cette fonction est destinée à d’autres fins, comme le calcul d’une somme de contrôle pour détecter la corruption de données.

    Si vous devez chiffrer et déchiffrer des données, utilisez les fonctions suivantes :

Exemples

SELECT sha2('Snowflake', 224);

----------------------------------------------------------+
                  SHA2('SNOWFLAKE', 224)                  |
----------------------------------------------------------+
 6267d3d7a59929e6864dd4b737d98e3ef8569d9f88a7466647838532 |
----------------------------------------------------------+
Copy

Le type de données de la sortie est une chaîne (VARCHAR) et peut être stocké dans une colonne VARCHAR :

Créez et remplissez une table :

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

Voici la requête et la sortie :

SELECT v, v_as_sha2, v_as_sha2_hex
  FROM sha_table
  ORDER BY v;
+-------+------------------------------------------------------------------+------------------------------------------------------------------+
| V     | V_AS_SHA2                                                        | V_AS_SHA2_HEX                                                    |
|-------+------------------------------------------------------------------+------------------------------------------------------------------|
| AbCd0 | e1d8ba27889d6782008f495473278c4f071995c5549a976e4d4f93863ce93643 | e1d8ba27889d6782008f495473278c4f071995c5549a976e4d4f93863ce93643 |
+-------+------------------------------------------------------------------+------------------------------------------------------------------+
Copy