Fonction scalaire ENCRYPT_TDES ou ENCRYPT
La fonction ENCRYPT_TDES renvoie une valeur qui est le résultat du chiffrement du premier argument à l'aide de l'algorithme de chiffrement Triple DES. La fonction peut également définir le mot de passe utilisé pour le chiffrement.
Le mot de passe de cryptage peut également être défini à l'aide de la valeur ENCRYPTION PASSWORD, qui est attribuée à l'aide de l'instruction SET ENCRYPTION PASSWORD.
Le schéma est SYSIBM.
- chaîne de données
- Expression qui renvoie la valeur de la chaîne à chiffrer. L'expression de chaîne doit renvoyer un type de données chaîne intégré qui n'est pas un LOB. L'attribut length doit être supérieur ou égal à 0 (zéro). L'attribut length est limité à 32640 si hint-string est spécifié et à 32672 si hint-string n'est pas spécifié.
L'argument peut également être un type de données numériques. L'argument numérique est implicitement converti en un type de données VARCHAR.
- chaîne-mot-de-passe
- Expression qui renvoie une valeur CHAR ou VARCHAR d'au moins 6 octets et d'au plus 127 octets.
L'argument peut également être un type de données numériques. L'argument numérique est implicitement converti en un type de données VARCHAR.
La valeur représente le mot de passe utilisé pour chiffrer la chaîne de données. Si la valeur de l'argument password est nulle ou non spécifiée, les données sont cryptées à l'aide de la valeur ENCRYPTION PASSWORD, qui doit avoir été affectée par l'instruction SET ENCRYPTION PASSWORD.
- cordon de repère
- Expression qui renvoie une valeur CHAR ou VARCHAR d'une longueur maximale de 32 octets et qui aide les propriétaires de données à se souvenir des mots de passe (par exemple, « Ocean » comme indice pour se souvenir de « Pacific »).
L'argument peut également être un type de données numériques. L'argument numérique est implicitement converti en un type de données VARCHAR.
Si une valeur d'indice est spécifiée, l'indice est intégré dans le résultat et peut être récupéré à l'aide de la fonction GETHINT. Si cet argument est nul ou non spécifié et qu'aucun indice n'a été spécifié lors de la définition du MOT DE PASSE DE CHIFFREMENT, aucun indice n'est intégré au résultat. Si la chaîne de mot de passe n'est pas spécifiée, l'indice peut être spécifié à l'aide de l'instruction SET ENCRYPTION PASSWORD.
| Type de données du premier argument | Type de données du résultat |
|---|---|
| BINARY, VARBINARY | VARBINARY |
| CHAR, VARCHAR, GRAPHIC, VARGRAPHIC | VARCHAR FOR BIT DATA |
Le schéma d'encodage du résultat est le même que celui de la chaîne de données. Si le résultat est des données de caractères, le résultat est des données binaires.
L'attribut length du résultat est différent selon que la chaîne d'indication est spécifiée ou non :
- Si une chaîne d'indication est spécifiée, l'attribut de longueur du résultat est l'attribut de longueur des données non cryptées + 24 octets + le nombre d'octets jusqu'à la prochaine limite de 8 octets + 32 octets pour l'indication.
- Si la chaîne d'indication n'est pas spécifiée, l'attribut de longueur du résultat est l'attribut de longueur des données non cryptées + 24 octets + le nombre d'octets jusqu'à la prochaine limite de 8 octets.
Le résultat peut être nul; si le premier argument est nul, le résultat est la valeur nulle.
Le résultat chiffré est plus long que la valeur de la chaîne de données. Par conséquent, lors de l'attribution de valeurs chiffrées, assurez-vous que la cible est déclarée avec une longueur pouvant contenir la valeur chiffrée entière.
Remarques
- Considérations relatives au cryptage des données :
- Protection par mot de passe
- Pour empêcher tout accès involontaire au mot de passe de chiffrement, ne spécifiez pas la chaîne de mot de passe en tant que constante de chaîne dans la source d'un programme, d'une procédure ou d'une fonction. Utilisez plutôt l'instruction SET ENCRYPTION PASSWORD ou une variable.
- Algorithme de chiffrement :
- L'algorithme de chiffrement interne utilisé est le Triple DES cipher block chaining (CBC) avec padding. La clé secrète de 128 bits est dérivée du mot de passe à l'aide d'un hachage de type « MD5 ».
- Cryptage des mots de passe et des données
- Il est de votre responsabilité d'assurer la gestion des mots de passe. Une fois les données cryptées, seul le mot de passe utilisé pour les crypter peut être utilisé pour les décrypter. Si un mot de passe différent de celui utilisé pour chiffrer les données est utilisé pour les déchiffrer, les résultats du déchiffrement ne correspondront pas à la chaîne d'origine. Aucune erreur ou avertissement n'est renvoyé. Les variables CHAR peuvent être complétées par des espaces si elles sont utilisées pour définir des valeurs de mot de passe. Le résultat chiffré peut contenir un caractère de fin nul et d'autres caractères non imprimables.
- Définitions des colonnes du tableau
- Lors de la définition des colonnes et des types devant contenir des données chiffrées, calculez toujours l'attribut de longueur comme suit :
- Pour les données cryptées avec un indice intégré, la longueur de colonne doit être l'attribut de longueur des données non cryptées + 24 octets + le nombre d'octets jusqu'à la limite des 8 octets suivants + 32 octets pour l'indice.
- Pour les données cryptées sans indice intégré, la longueur de colonne doit être l'attribut de longueur des données non cryptées + 24 octets + le nombre d'octets jusqu'à la limite des 8 octets suivants.
Voici quelques exemples de calcul de longueur de colonne, en supposant qu'aucun indice n'est intégré :Maximum length of non-encrypted data 6 bytes 24 bytes for encryption key 24 bytes Number of bytes to the next 8 byte boundary 2 bytes --------- Encrypted data column length 32 bytes Maximum length of non-encrypted data 32 bytes 24 bytes for encryption key 24 bytes Number of bytes to the next 8 byte boundary 0 bytes --------- Encrypted data column length 56 bytes - Administration des données cryptées
- Les données cryptées ne peuvent être décryptées que sur des serveurs qui prennent en charge le décryptage des données qui ont été cryptées à l'aide de l'algorithme de cryptage Triple DES. Par conséquent, la réplication de colonnes contenant des données cryptées ne doit être effectuée que vers des serveurs qui prennent en charge les fonctions de décryptage et les mêmes algorithmes de cryptage.
- Syntaxe alternative :
- ENCRYPT est un synonyme de ENCRYPT_TDES. Db2 prend en charge ce mot-clé pour assurer la compatibilité avec d'autres produits de la famille d' Db2 .
Exemples
- Exemple 1 :
- Crypter le numéro de sécurité sociale qui est inséré dans le tableau. Définissez la valeur MOT DE PASSE DE CHIFFREMENT sur « Ben123 » et utilisez-la comme mot de passe.
SET ENCRYPTION PASSWORD ='Ben123'; INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES ('289-46-8832'); - Exemple 2 :
- Crypter le numéro de sécurité sociale qui est inséré dans le tableau. Spécifiez explicitement « Ben123 » comme mot de passe de chiffrement.
INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES ('289-46-8832','Ben123'); - Exemple 2
- Crypter le numéro de sécurité sociale qui est inséré dans le tableau. Spécifiez « Pacific » comme mot de passe de chiffrement et fournissez « Ocean » comme indice pour aider l'utilisateur à se souvenir du mot de passe « Pacific ».
L'instruction précédente renvoie un nombre à virgule flottante en double précision dont la valeur approximative est 31.62.INSERT INTO EMP(SSN) VALUES ENCRYPT_TDES ('289-46-8832','Pacific','Ocean');
