bloc3:bdd-symetric-ciphering
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| bloc3:bdd-symetric-ciphering [2025/03/18 08:18] – richier.l | bloc3:bdd-symetric-ciphering [2025/04/23 14:55] (Version actuelle) – richier.l | ||
|---|---|---|---|
| Ligne 7: | Ligne 7: | ||
| Oracle fournit le package DBMS_CRYPTO permettant d' | Oracle fournit le package DBMS_CRYPTO permettant d' | ||
| - | Lien vers le document officiel : | + | Lien vers le document officiel : [[https:// |
| ==== Droit d' | ==== Droit d' | ||
| **Pour utiliser DBMS_CRYPTO, | **Pour utiliser DBMS_CRYPTO, | ||
| - | '' | + | 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' | + | Les données à chiffrer peuvent être des chaînes de caractères (VARCHAR2, CLOB) ou des types binaires (BLOB). Il est recommandé d' |
| ===== 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 : |
| - | < | + | < |
| 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 |
| 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(' | key => UTL_RAW.cast_to_raw(' | ||
| - | iv => UTL_RAW.cast_to_raw(' | ||
| ); | ); | ||
| - | '' | ||
| </ | </ | ||
| ===== Déchiffrement des données ===== | ===== Déchiffrement des données ===== | ||
| Un gestionnaire (GESTK) veut récupérer le nom original : | Un gestionnaire (GESTK) veut récupérer le nom original : | ||
| - | < | + | < |
| SELECT UTL_RAW.CAST_TO_VARCHAR2( | SELECT UTL_RAW.CAST_TO_VARCHAR2( | ||
| DBMS_CRYPTO.DECRYPT( | DBMS_CRYPTO.DECRYPT( | ||
| Ligne 44: | Ligne 42: | ||
| On peut également créée une fonction de déchiffrement pour simplifier les requêtes | On peut également créée une fonction de déchiffrement pour simplifier les requêtes | ||
| ** | ** | ||
| - | < | + | < |
| CREATE OR REPLACE FUNCTION dechiffrer(p_data RAW) RETURN VARCHAR2 AUTHID CURRENT_USER AS | CREATE OR REPLACE FUNCTION dechiffrer(p_data RAW) RETURN VARCHAR2 AUTHID CURRENT_USER AS | ||
| v_decrypted RAW(2000); | v_decrypted RAW(2000); | ||
| Ligne 60: | Ligne 58: | ||
| Donc un gestionnaire peut peut maintenant exécuter une requête simple : | Donc un gestionnaire peut peut maintenant exécuter une requête simple : | ||
| - | < | + | < |
| SELECT dechiffrer(nomCli_enc) AS nomCli FROM Clients; | SELECT dechiffrer(nomCli_enc) AS nomCli FROM Clients; | ||
| </ | </ | ||
bloc3/bdd-symetric-ciphering.1742282332.txt.gz · Dernière modification : 2025/03/18 08:18 de richier.l
