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

Développement SQL Server Discussion :

Probleme decryptage avec certificat


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut Probleme decryptage avec certificat
    Bonjour a tous,

    J'ai creer un certificat et une cle symetrique pour encrypter certains champs de ma base de donnees. L'encryptage s'effectue parfaitement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    open symmetric key SensitiveDataSymmetricKey
    Decryption by certificate EmployeeDataCertificate
     
    SET @EncryptedData = convert(varbinary,encryptbykey(key_guid('SensitiveDataSymmetricKey'), @Data))
    Le probleme se situe au niveau de la recuperation des ces donnees encryptees... Lorsque j'effectue la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    open symmetric key SensitiveDataSymmetricKey
    Decryption by certificate EmployeeDataCertificate
     
    SET @DecryptedData = CONVERT(nvarchar, decryptbykey(@Data))
    le serveur me retourne une valeure NULL alors que si je fais un select dans le champ, il me retourne bien une valeure. C'est donc le DecryptByKey qui ne marcherait pas ?! Une idee de pourquoi l'encryptage fonctionne mais pas le decryptage ??

    Merci d'avance

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 001
    Billets dans le blog
    6
    Par défaut
    comment avez vous créé votre clef ?
    Y a t-il une master key dans la base ??

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Bonjour,

    voici le script utilise:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    use [Toto]
    GO
     
    /*--- Create a new master key ---*/
    if not exists (
    select * from sys.symmetric_keys where name = N'##MS_DatabaseMasterKey##'
    )
    create master key encryption by password ='testTOTO';
    GO
     
    /*--- Create the certificate ---*/
    if not exists (
    select * from sys.certificates where name = N'EmployeeDataCertificate'
    )
    Create certificate EmployeeDataCertificate With subject = 'SensitiveData';
    GO
     
    /*--- Create symmetric key for certificiate ---*/
    create symmetric key SensitiveDataSymmetricKey
    with algorithm = AES_256
    encryption by certificate EmployeeDataCertificate;
    GO
     
    GRANT CONTROL ON CERTIFICATE:: EmployeeDataCertificate TO [All USP EXEC];
    GO
    GRANT CONTROL ON SYMMETRIC KEY:: SensitiveDataSymmetricKey TO [All USP EXEC];
    GO
    Donc oui j'utilise bien une master key que je definit moi meme

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Si ca peut aider a comprendre...

    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
    use test
     
    declare @normal nvarchar(50),
    @encrypt varbinary(256),
    @decrypt nvarchar(50)
     
    set @normal = N'test codage'
    open symmetric key SensitiveDataSymmetricKey
    Decryption by certificate EmployeeDataCertificate;
    set @encrypt = convert(varbinary,encryptbykey(key_guid('SensitiveDataSymmetricKey'),@normal))
    set @decrypt = convert(nvarchar , decryptbykey(@encrypt))
     
    SELECT @normal as 'Normal'
     ,@encrypt as 'Encrypt'
    ,@decrypt as 'Decrypt'
    Et le resultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          |     Normal     |         Encrypt        |  Decrypt
    ------------------------------------------------------------
       1  |  test codage   |  0x0099326E47...       |   NULL

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 001
    Billets dans le blog
    6
    Par défaut
    Vous utilisez une base puis une autre... toto et test !

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Vous utilisez une base puis une autre... toto et test !

    A +
    Oui et non, en fait j'ai juste donne un nom lambda. Mais dans la realite j'utilise la meme base

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    191
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 191
    Par défaut
    Finalement je vais changer de methode et opter pour un cryptage et decryptage par certificat uniquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    set @encrypt = encryptByCert(Cert_Id('EmployeeDataCertificate'),@normal)
    set @decrypt = decryptByCert(Cert_Id('EmployeeDataCertificate'),@encrypt)
    Mais si quelqu'un q une idee de pourquoi ca marche pas avec DecryptByKey, je suis preneur

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 001
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 001
    Billets dans le blog
    6
    Par défaut
    Vous ne typez pas correctement vos données !!!!

    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
    19
    20
    21
    declare @normal nvarchar(50),
    @encrypt varbinary(256),
    @decrypt nvarchar(50);
     
    SET @normal = N'test codage';
    open symmetric KEY SensitiveDataSymmetricKey
    Decryption BY certificate EmployeeDataCertificate;
    SET @encrypt = convert(varbinary(256), encryptbykey(key_guid('SensitiveDataSymmetricKey'), @normal));
    SET @decrypt = convert(nvarchar (50), decryptbykey(@encrypt));
    
    /* VOTRE ERREUR :
    SET @normal = N'test codage';
    open symmetric KEY SensitiveDataSymmetricKey
    Decryption BY certificate EmployeeDataCertificate;
    SET @encrypt = convert(varbinary, encryptbykey(key_guid('SensitiveDataSymmetricKey'), @normal));
    SET @decrypt = convert(nvarchar , decryptbykey(@encrypt));
    */
     
    SELECT @normal AS 'Normal'
     ,@encrypt AS 'Encrypt'
    ,@decrypt AS 'Decrypt';
    Si vous ne passez pas la longueur à un type, SQL prend le minimum, ce qui n'est pas compatible avec la longueur de vos données !!!!

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. [String] Probleme incomprehensible avec split
    Par scorpiwolf dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 20/07/2004, 21h21
  2. [JTextAera][JScrollPane]Probleme mineur avec l'ascenseur
    Par Voxdei dans le forum Composants
    Réponses: 2
    Dernier message: 18/07/2004, 09h52
  3. [VB.NET] - Probleme Label avec Database
    Par codez dans le forum ASP.NET
    Réponses: 4
    Dernier message: 03/06/2004, 17h37
  4. probleme sql avec delphi
    Par lil_jam63 dans le forum Bases de données
    Réponses: 7
    Dernier message: 25/02/2004, 04h32
  5. probleme GRAVE avec directx 9
    Par l'arbre en plastique dans le forum DirectX
    Réponses: 3
    Dernier message: 02/09/2003, 23h59

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