IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Problème utilisation DBMS_CRYPTO


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2013
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 17
    Par défaut Problème utilisation DBMS_CRYPTO
    Bonjour,

    On vient de m'accorder les droits d'accès au package DBMS_CRYPTO, mais malgré les différents posts du forum je rencontre des difficultés.
    Je précise que je suis débutant dans le domaine Oracle /SQL

    Je cherche à crypter plusieurs colonnes d'une table existante, que je pourrais par la suite suite décrypter selon les besoins.

    Le code ci-dessous ne m'a permis que de transformer les données en (null)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    DECLARE
    raw_key RAW(2000);
    PRE_NOM_ASSURE RAW(30000); -- champ à crypter
    PRE_NOM_ASSURE_ENCRYPTED RAW(30000); -- champ crypté
    
    encryption_type PLS_INTEGER :=  DBMS_CRYPTO.ENCRYPT_AES128 + DBMS_CRYPTO.CHAIN_ECB + DBMS_CRYPTO.PAD_PKCS5;
    v_counter INTEGER := 0;
    BEGIN
         
        raw_key := DBMS_CRYPTO.Hash (UTL_I18N.STRING_TO_RAW ('password', 'BP7IGE8559Z43'), DBMS_CRYPTO.HASH_MD5);
         
        PRE_NOM_ASSURE := DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW(PRE_NOM_ASSURE, 'GO8ISO8859P15'), encryption_type, raw_key);
         
        update AAA_FR.T_TABLE_PRE_TEMP  set PRE_NOM_ASSURE = PRE_NOM_ASSURE_ENCRYPTED;
         
        COMMIT;
    END;
    /

    Je cherche également le bon code pour décrypter par la suite les données.

    Merci beaucoup par avance pour votre aide!

    Salutations

  2. #2
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Je connais rien à la crypto mais plusieurs remarques :

    1) quelle est la version de ta base Oracle?

    2) DBMS_CRYPTO.ENCRYPT a 5 paramètres dans la 12, dont un seul optionnel. Toi tu n'utilises que trois paramètres... Il faut faire une gestion des EXCEPTIONs dans ton programme PL/SQL car je pense qu'il y a peut-être une erreur qui n'est pas interceptée par Oracle (même si cela serait étonnant)

    Extrait de la doc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    DBMS_CRYPTO.ENCRYPT(
       dst IN OUT NOCOPY BLOB,
       src IN            BLOB,
       typ IN            PLS_INTEGER,
       key IN            RAW,
       iv  IN            RAW          DEFAULT NULL);
     
    DBMS_CRYPTO.ENCRYPT(
       dst IN OUT NOCOPY BLOB,
       src IN            CLOB         CHARACTER SET ANY_CS,
       typ IN            PLS_INTEGER,
       key IN            RAW,
       iv  IN            RAW          DEFAULT NULL);
    3) C'est quoi 'BP7IGE8559Z43'? Tu as réussi l'exploit d'être le seul lien sous Google quand on fait une recherche sur ce mot... Idem pour 'GO8ISO8859P15'.
    Le deuxième paramètre de UTL_I18N.STRING_TO_RAW est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dst_charset : "Specifies the destination character set. If dst_charset is NULL, then the database character set is used for CHAR data and the national character set is used for NCHAR data".
    Je pense qu'il faut que tu revois les appels aux procédures PL/SQL, et notamment la valeur des paramètres, car ton ou tes erreurs peuvent venir de là.


    Un lien en français qui pourrait t'aider : http://droe-dba.over-blog.fr/article...-42771236.html

  3. #3
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Ou simplement une erreur de variable

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PRE_NOM_ASSURE := DBMS_CRYPTO.ENCRYPT(UTL_I18N.STRING_TO_RAW(PRE_NOM_ASSURE, 'GO8ISO8859P15'), encryption_type, raw_key);
    UPDATE AAA_FR.T_TABLE_PRE_TEMP set PRE_NOM_ASSURE = PRE_NOM_ASSURE_ENCRYPTED;

  4. #4
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Si c'est le cas, pourquoi il n'y a pas eu d'erreur?

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    PRE_NOM_ASSURE_ENCRYPTED est déclaré dans la partie DECLARE sans affectation, donc vaut NULL

    Quand au reste, sur ma base ça passe sans erreur , bien que je n'ai pas les charset indiqués
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM V$NLS_VALID_VALUES WHERE parameter = 'CHARACTERSET'
    Contrairement au CONVERT, le STRING_TO_RAW accepte les charset inconnus, mais renvoie NULL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT UTL_I18N.STRING_TO_RAW ('password', 'BP7IGE8559Z43')
    FROM dual
    NULL
     
    SELECT UTL_I18N.STRING_TO_RAW ('password', 'UTF8')
    FROM dual
    70617373776F7264

  6. #6
    Membre Expert
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2013
    Messages : 2 005
    Par défaut
    Et tu as testé sa ligne avec DBMS_CRYPTO.ENCRYPT?
    A mon avis il manque un paramètre dans son test.

Discussions similaires

  1. Problème utilisation DLL
    Par Tub-95 dans le forum MFC
    Réponses: 4
    Dernier message: 02/11/2005, 12h00
  2. [Tomcat][Spring] Problème utilisation mémoire
    Par Wutintin dans le forum Hibernate
    Réponses: 12
    Dernier message: 08/09/2005, 14h57
  3. [JSTL] [EL] Problème utilisation <c:out>
    Par XavierL dans le forum Taglibs
    Réponses: 7
    Dernier message: 14/08/2005, 20h12
  4. (Problème) Utilisation de l'API mySQL [Delphi 2005 Perso]
    Par will-scs dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/08/2005, 18h26
  5. [JAR]Problème utilisation manifest et jar
    Par doudine dans le forum Eclipse Java
    Réponses: 6
    Dernier message: 07/01/2005, 10h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo