Récupérer une valeur cryptée par procédure stockée

3KyNoX Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 12 novembre 2009 - 29 oct. 2008 à 11:47
cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 - 12 nov. 2008 à 15:55
Bonjour,

J'éprouve des difficultés à récupérer une valeur cryptée par EncryptByPassPhrase dans une de mes table pour l'assigner à un string ensuite.

Voici comment je crée mon champ crypté grâce à une procédure stockée :

INSERT INTO dbo.aspnet_Colocation (Colocation, MotDePasse, Adresse, CodePostal, Ville, Surface, NbChambres, DateDebut, MontantLoyer, MontantCharges, NbColocataires)
                VALUES (@Colocation, EncryptByPassPhrase(N'azerty' , @MotDePasse, NULL), @Adresse, @CodePostal, @Ville, @Surface, @NbChambres, @DateDebut, @MontantLoyer, @MontantCharges, @NbColocataires)

La valeur @MotDePasse est défini par un string dans mon code C# qui appelle la procédure stockée qui crypte ce string par l'intermédiaire de la clef de chiffrement N'azerty' si j'ai bien compris...

L'insertion se fait correctement dans ma table et le string voulu est bien crypté correctement.

Maintenant, quand je veux récupérer cette valeur décryptée et m'en servir pour la comparer avec un autre string, j'utilise un datareader mais j'obtiens une erreur au moment de la compilation. Voici le code C# utilisé :

string password;
        string Colocation = "crocus                                            ";        string sSql "SELECT CONVERT(nvarchar, DecryptByPassphrase(N'azerty', MotDePasse)) FROM dbo.aspnet_Colocation WHERE Colocation '" + Colocation + "'";
        SqlConnection cn = new SqlConnection();
        cn.ConnectionString = @"Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True";

        SqlCommand cd = new SqlCommand(sSql, cn);
        cn.Open();
        SqlDataReader dr = cd.ExecuteReader();

        for (int i = 0; dr.Read(); i++)
        {
            password = dr["MotDePasse"].ToString();
        }

        cn.Close();

J'obtient ici un OutOfRangeException sur le champ MotDePasse, impossible de récupérer cette valeur.

Merci d'avance pour toute aide apportée là ou je dois sûrement me tromper...

1 réponse

cs_jimmy69 Messages postés 778 Date d'inscription dimanche 22 décembre 2002 Statut Membre Dernière intervention 27 novembre 2008 1
12 nov. 2008 à 15:55
salut salut,

je suis pas un pro mais si tu essayes de decrypter ton champ dans le management de studio est ce que cela fonctionne !?

Bonne journée
Christophe
0
Rejoignez-nous