Outils pour utilisateurs

Outils du site


bloc3:bdd-symetric-ciphering

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
bloc3:bdd-symetric-ciphering [2025/03/18 08:10] richier.lbloc3:bdd-symetric-ciphering [2025/04/23 14:55] (Version actuelle) richier.l
Ligne 7: Ligne 7:
 Oracle fournit le package DBMS_CRYPTO permettant d'effectuer des opérations de chiffrement et de déchiffrement de données de manière sécurisée. Oracle fournit le package DBMS_CRYPTO permettant d'effectuer des opérations de chiffrement et de déchiffrement de données de manière sécurisée.
  
-Lien vers la documentation officielle :https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_CRYPTO.html +Lien vers le document officiel [[https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_CRYPTO.html]]
 ==== Droit d'exécution sur ce module ==== ==== Droit d'exécution sur ce module ====
 **Pour utiliser DBMS_CRYPTO, il est nécessaire de disposer du privilège EXECUTE sur le package :** **Pour utiliser DBMS_CRYPTO, il est nécessaire de disposer du privilège EXECUTE sur le package :**
-''GRANT EXECUTE ON DBMS_CRYPTO TO utilisateur;''+GRANT EXECUTE ON DBMS_CRYPTO TO utilisateur;
  
 ===== Type des données chiffrées ===== ===== Type des données chiffrées =====
-Les données à chiffrer peuvent être des chaînes de caractères (VARCHAR2, CLOB) ou des types binaires (BLOB). Il est recommandé d'utiliser RAW pour le stockage de données chiffrées.+Les données à chiffrer peuvent être des chaînes de caractères (VARCHAR2, CLOB) ou des types binaires (BLOB). Il est recommandé d'utiliser **RAW** pour le stockage de données chiffrées.
  
 ===== Chiffrement des données ===== ===== Chiffrement des données =====
-Prenons un exemple sur une base de donnée existante et Dans la table Clients, on ajoute une colonne nomCli_enc pour stocker les noms chiffrés : +Prenons un exemple sur une base de donnée existante et dans la table Clients, on ajoute une colonne nomCli_enc pour stocker les noms chiffrés : 
-''ALTER TABLE Clients ADD nomCli_enc RAW(2000);''+<code SQL>ALTER TABLE Clients ADD nomCli_enc RAW(2000);</code>
 Ensuite on chiffre les noms des clients existants et les stocke dans la colonne nomCli_enc : Ensuite on chiffre les noms des clients existants et les stocke dans la colonne nomCli_enc :
-''UPDATE Clients +<code SQL> 
 +UPDATE Clients 
 SET nomCli_enc = DBMS_CRYPTO.ENCRYPT( SET nomCli_enc = DBMS_CRYPTO.ENCRYPT(
     src => UTL_RAW.cast_to_raw(nomCli),     src => UTL_RAW.cast_to_raw(nomCli),
     typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,     typ => DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5,
     key => UTL_RAW.cast_to_raw('MaCleSecrete16Bytes'),     key => UTL_RAW.cast_to_raw('MaCleSecrete16Bytes'),
-    iv  => UTL_RAW.cast_to_raw('InitialVector123') 
 ); );
-''+</code> 
 +===== Déchiffrement des données ===== 
 +Un gestionnaire (GESTK) veut récupérer le nom original : 
 +<code SQL> 
 +SELECT UTL_RAW.CAST_TO_VARCHAR2( 
 +    DBMS_CRYPTO.DECRYPT( 
 +        nomCli_enc, 
 +        DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 
 +        UTL_RAW.cast_to_raw('MaCleSecrete16Bytes'), 
 +        UTL_RAW.cast_to_raw('InitialVector123'
 +    ) 
 +) AS nomCli_dechiffre FROM Clients; 
 +</code> 
 +** 
 +On peut également créée une fonction de déchiffrement pour simplifier les requêtes  
 +** 
 +<code SQL> 
 +CREATE OR REPLACE FUNCTION dechiffrer(p_data RAW) RETURN VARCHAR2 AUTHID CURRENT_USER AS   
 +    v_decrypted RAW(2000); 
 +BEGIN   
 +    v_decrypted := DBMS_CRYPTO.DECRYPT( 
 +        p_data, 
 +        DBMS_CRYPTO.ENCRYPT_AES256 + DBMS_CRYPTO.CHAIN_CBC + DBMS_CRYPTO.PAD_PKCS5, 
 +        UTL_RAW.cast_to_raw('MaCleSecrete16Bytes'), 
 +        UTL_RAW.cast_to_raw('InitialVector123'
 +    );   
 +    RETURN UTL_RAW.CAST_TO_VARCHAR2(v_decrypted);   
 +END; 
 +
 +</code>
  
-===== Déchiffrement des données =====''''+Donc un gestionnaire peut peut maintenant exécuter une requête simple : 
 +<code SQL> 
 +SELECT dechiffrer(nomCli_enc) AS nomCli FROM Clients; 
 +</code>
  
bloc3/bdd-symetric-ciphering.1742281814.txt.gz · Dernière modification : 2025/03/18 08:10 de richier.l