FirebirdSQL logo

DECRYPT()

Disponible en

DSQL, PSQL

Syntaxe
DECRYPT (encrypted_input
  [USING <algorithm>] [MODE <mode>]
  KEY key
  [IV iv] [<ctr_type>] [CTR_LENGTH ctr_length]
  [COUNTER initial_counter] )

<algorithm> ::= <block_cipher> | <stream_cipher>

<block_cipher> ::=
    AES | ANUBIS | BLOWFISH | KHAZAD | RC5
  | RC6 | SAFER+ | TWOFISH | XTEA

<stream_cipher> ::= CHACHA20 | RC4 | SOBER128

<mode> ::= CBC | CFB | CTR | ECB | OFB

<ctr_type> ::= CTR_BIG_ENDIAN | CTR_LITTLE_ENDIAN
Table 1. paramètres de fonction DECRYPT
Paramètre Description

encrypted_input

BLOB crypté ou chaîne de caractères (binaire)

algorithm

Algorithme de cryptage. Les algorithmes de bloc et de flux sont pris en charge.

mode

Mode de chiffrement. Obligatoire pour les algorithmes de chiffrement par blocs.

key

Clé de cryptage.

iv

Vecteur d’initialisation (IV). Doit être spécifié pour tous les ciphers de bloc sauf ECB et tous les ciphers de flux sauf RC4.

ctr_type

Ordre des octets du compteur. Ne peut être spécifié qu’en mode CTR. La valeur par défaut est CTR_LITTLE_ENDIAN.

ctr_length

Longueur du compteur en octets. Ne peut être spécifié qu’en mode CTR. La valeur par défaut est la longueur du vecteur d’initialisation IV.

initial_counter

Valeur initiale du compteur. Ne peut être spécifiée que pour l’algorithme CHACHA20. La valeur par défaut est 0.

type de résultat de retour

BLOB ou VARBINARY.

La fonction DECRYPT décrypte les données à l’aide d’un chiffrement symétrique. La taille des chaînes transmises à cette fonction doit répondre aux exigences de l’algorithme et du mode sélectionnés.

Example 1. Utilisation de la fonction DECRYPT
select decrypt(x'0154090759DF' using sober128 key 'AbcdAbcdAbcdAbcd'
               iv '01234567')
from rdb$database;

select decrypt(secret_field using aes mode ofb key '0123456701234567'
               iv init_vector)
from secure_table;

ENCRYPT()

Disponible en

DSQL, PSQL

Syntaxe
ENCRYPT (input
  [USING <algorithm>] [MODE <mode>]
  KEY key
  [IV iv] [<ctr_type>] [CTR_LENGTH ctr_length]
  [COUNTER initial_counter] )

<algorithm> ::= <block_cipher> | <stream_cipher>

<block_cipher> ::=
    AES | ANUBIS | BLOWFISH | KHAZAD | RC5
  | RC6 | SAFER+ | TWOFISH | XTEA

<stream_cipher> ::= CHACHA20 | RC4 | SOBER128

<mode> ::= CBC | CFB | CTR | ECB | OFB

<ctr_type> ::= CTR_BIG_ENDIAN | CTR_LITTLE_ENDIAN
Table 1. paramètres de fonction ENCRYPT
Paramètre Description

input

Une expression de type chaîne ou BLOB à crypter.

algorithm

Algorithme de cryptage. Les algorithmes de bloc et de flux sont pris en charge.

mode

Mode de chiffrement. Obligatoire pour les algorithmes de chiffrement par blocs.

key

Clé de cryptage.

iv

Vecteur d’initialisation (IV). Doit être spécifié pour tous les ciphers de bloc sauf ECB et tous les ciphers de flux sauf RC4.

ctr_type

Ordre des octets du compteur. Ne peut être spécifié qu’en mode CTR. La valeur par défaut est CTR_LITTLE_ENDIAN.

ctr_length

Longueur du compteur en octets. Ne peut être spécifié qu’en mode CTR. La valeur par défaut est la longueur du vecteur d’initialisation IV.

initial_counter

Valeur initiale du compteur. Ne peut être spécifiée que pour l’algorithme CHACHA20. La valeur par défaut est 0.

type de résultat de retour

BLOB ou VARBINARY.

La fonction ENCRYPT permet de crypter des données en utilisant un chiffrement symétrique.

Note
  • Cette fonction renvoie BLOB SUB_TYPE BINARY si le premier argument est BLOB, et VARBINARY pour tous les autres types de texte et binaires.

  • Les tailles des chaînes (par exemple, key et iv) transmises à cette fonction doivent répondre aux exigences de l’algorithme et du mode choisis.Voir le tableau [fblangref-scalarfuncs-tbl-encrypt-req] pour plus de détails.

    • En règle générale, la taille de iv doit correspondre à la taille du bloc de l’algorithme.

    • Pour les modes ECB et CBC, input doit être un multiple de la taille du bloc, vous devrez le remplir manuellement avec des zéros ou des espaces si nécessaire.

Les caractéristiques des différents algorithmes et modes dépassent le cadre de ce guide linguistique.

Table 2. Exigences des algorithmes de cryptage
Algorithme Taille de la clé (octet) Taille du bloc (octet) Note

Cryptage par blocs

AES

16, 24, 32

16

 

ANUBIS

16 - 40, par incréments 4

16

 

BLOWFISH

8 - 56

8

 

KHAZAD

16

8

 

RC5

8 - 128

8

 

RC6

8 - 128

16

 

SAFER+

16, 24, 32

16

 

TWOFISH

16, 24, 32

16

 

XTEA

16

8

 

Cryptage en ligne

CHACHA20

16, 32

1

La taille (IV) est de 8 ou 12 octets. Pour la taille 8, initial_counter est un entier de 64 bits, pour la taille 12, c’est un entier de 32 bits.

RC4

5 - 256

1

 

SOBER128

4x

1

La taille (IV) est de 4y octets, la longueur est indépendante de la taille de la clé.

Example 1. Utilisation de la fonction ENCRYPT
select encrypt('897897' using sober128 key 'AbcdAbcdAbcdAbcd' iv '01234567')
from rdb$database;