Catégories :

Fonctions de chiffrement

TRY_DECRYPT

Une version spéciale de DECRYPT qui retourne une valeur NULL si une erreur se produit pendant le déchiffrement.

Voir aussi :

ENCRYPT , ENCRYPT_RAW , DECRYPT , DECRYPT_RAW , TRY_DECRYPT_RAW

Syntaxe

TRY_DECRYPT( <value_to_decrypt> , <passphrase> ,
         [ [ <additional_authenticated_data> , ] <encryption_method> ]
       )
Copy

Arguments

Obligatoire :

value_to_decrypt

La valeur BINARY à déchiffrer.

passphrase

La phrase secrète à utiliser pour chiffrer/déchiffrer les données. La phrase secrète est une VARCHAR.

Facultatif :

additional_authenticated_data

Les données authentifiées supplémentaires (AAD) sont des données supplémentaires dont la confidentialité et l’authenticité sont assurées pendant le processus de déchiffrement. Cependant, cet AAD n’est pas chiffré et n’est pas inclus en tant que champ dans la valeur renvoyée par la fonction ENCRYPT ou ENCRYPT_RAW.

Si AAD est transmis à la fonction de chiffrement (ENCRYPT ou ENCRYPT_RAW), alors le même AAD doit être transmis à la fonction de déchiffrement (DECRYPT ou DECRYPT_RAW). Si l’AAD transmis à la fonction de déchiffrement ne correspond pas à l’AAD transmis à la fonction de chiffrement, le déchiffrement échoue.

La différence entre l’AAD et la passphrase est que la phrase secrète est destinée à être gardée secrète (sinon, le chiffrement est essentiellement sans valeur) tandis que l’AAD peut être laissé public. L’AAD permet d’authentifier qu’une information publique et une valeur chiffrée sont associées l’une à l’autre. La section d’exemples de la fonction ENCRYPT inclut un exemple montrant le comportement lorsque l’AAD correspond et le comportement lorsqu’il ne correspond pas.

Pour ENCRYPT_RAW et DECRYPT_RAW, le type de données d’AAD doit être BINARY. Pour ENCRYPT et DECRYPT, le type de données d’AAD peut être VARCHAR ou BINARY, et n’a pas besoin de correspondre au type de données de la valeur qui a été chiffrée.

AAD est pris en charge uniquement par les modes de chiffrement activés par AEAD comme GCM (par défaut).

encryption_method

Cette chaîne spécifie la méthode à utiliser pour chiffrer/déchiffrer les données. Cette chaîne contient des sous-champs :

<algorithm>-<mode> [ /pad: <padding> ]
Copy

L” algorithm est actuellement limité à :

  • 'AES' : lorsqu’une phrase secrète est transmise (par exemple à ENCRYPT), la fonction utilise le chiffrement AES-256 (256 bits). Lorsqu’une clé est transmise (par exemple à ENCRYPT_RAW), la fonction utilise un chiffrement de 128, 192 ou 256 bits, en fonction de la longueur de la clé.

L” algorithm est insensible à la casse.

Le mode spécifie le mode de chiffrement par bloc à utiliser pour chiffrer les messages. Le tableau suivant montre quels modes sont pris en charge et lesquels de ces modes prennent en charge le remplissage :

Mode

Remplissage

Description

'ECB'

Oui

Chiffrer chaque bloc individuellement avec la clé. Ce mode est généralement déconseillé et n’est inclus que pour des raisons de compatibilité avec les implémentations externes.

'CBC'

Oui

Le bloc chiffré est XORed avec le bloc précédent.

'GCM'

Non

Le mode Galois/compteur est un mode de chiffrement hautes performances activé par AEAD. AEAD assure en outre l’authenticité et la confidentialité des données chiffrées en générant une balise AEAD. De plus, AEAD prend en charge AAD (données authentifiées supplémentaires).

'CTR'

Non

Mode compteur.

'OFB'

Non

Retour de sortie. Le texte chiffré est XORed avec le texte brut d’un bloc.

'CFB'

Non

Le retour de chiffrement est une combinaison de OFB et CBC.

Le mode est insensible à la casse.

Le padding spécifie comment remplir les messages dont la longueur n’est pas un multiple de la taille du bloc. Le remplissage est applicable uniquement pour les modes ECB et CBC ; le remplissage est ignoré pour les autres modes. Les valeurs possibles pour le remplissage sont les suivantes :

  • 'PKCS' : utilise PKCS5 pour le remplissage de bloc.

  • 'NONE' : pas de remplissage. L’utilisateur doit prendre soin du remplissage lors de l’utilisation du mode ECB ou CBC.

Le padding est insensible à la casse.

Paramètre par défaut : 'AES-GCM'.

Si le mode n’est pas spécifié, GCM est utilisé.

Si le padding n’est pas spécifié, PKCS est utilisé.

Renvoie

Renvoie la valeur décryptée sous la forme d’une valeur BINARY ou d’une valeur NULL si une erreur d’exécution survient lors du déchiffrement.

Notes sur l’utilisation et exemples

Voir la fonction DECRYPT pour les notes d’utilisation et les exemples.