Un moyen simple et sécurisé de chiffrer et déchiffrer des données dans Oracle avec le package DBMS_OBFUSCATION_TOOLKIT. DBMS_OBFUSCATION_TOOLKIT permet à une application de chiffrer des données à l'aide des algorithmes Data Encryption Standard (DES) ou Triple DES. Vous trouverez ci-dessous l'exemple de fonction packagée de base de données pour chiffrer les données dans Oracle à l'aide de PL SQL.
Le package Toolkit suivant utilise le package DBMS_OBFUSCATION_TOOLKIT pour chiffrer et déchiffrer les données.
Remarque :Vous devez modifier la clé définie dans ce package pour avoir votre méthode de chiffrement secrète personnalisée. Les données chiffrées par la clé ne peuvent être déchiffrées qu'avec cette clé. En savoir plus...
Utilisation pour chiffrer les données dans Oracle :
Select toolkit.encrypt('The test data 123.') From Dual;
Shows: ----------- 5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322
Pour déchiffrer les données :
select Toolkit.decrypt('5C8ADD7B98919FC937A53AB986782EA9EE63D4ADDF7CA322') from dual;
Shows: ----------- The test data 123.
Create Or Replace PACKAGE Toolkit As FUNCTION encrypt (p_text In VARCHAR2) RETURN RAW; FUNCTION decrypt (p_raw In RAW) RETURN VARCHAR2; END Toolkit; /
Create Or Replace PACKAGE BODY Toolkit As ---- the custom key for g_key RAW(32767) := UTL_RAW.cast_to_raw('20130417'); ---- the custom padding character g_pad_chr VARCHAR2(1) := '_'; PROCEDURE padstring (p_text In OUT VARCHAR2); FUNCTION encrypt (p_text In VARCHAR2) RETURN RAW Is l_text VARCHAR2(32767) := p_text; l_encrypted RAW(32767); BEGIN padstring(l_text); DBMS_OBFUSCATION_TOOLKIT.desencrypt(input => UTL_RAW.cast_to_raw(l_text), Key => g_key, encrypted_data => l_encrypted); RETURN l_encrypted; END; FUNCTION decrypt (p_raw In RAW) RETURN VARCHAR2 Is l_decrypted VARCHAR2(32767); BEGIN DBMS_OBFUSCATION_TOOLKIT.desdecrypt(input => p_raw, Key => g_key, decrypted_data => l_decrypted); RETURN Rtrim(UTL_RAW.cast_to_varchar2(l_decrypted), g_pad_chr); END; PROCEDURE padstring (p_text In OUT VARCHAR2) Is l_units NUMBER; BEGIN IF Length(p_text) Mod 8 > 0 Then l_units := Trunc(Length(p_text)/8) + 1; p_text := Rpad(p_text, l_units * 8, g_pad_chr); END IF; END; END Toolkit; /
-
Plan d'exécution SQL Server - qu'est-ce que c'est et comment aide-t-il à résoudre les problèmes de performances ?
-
Exporter la base de données SQLite vers un fichier CSV
-
En savoir plus sur l'utilisation de SQL Server Management Studio
-
Index SQL DROP, table DROP et instructions de base de données DROP expliquées avec des exemples