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...