A Propos de EncryptByPassPhrase

3KyNoX Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 12 novembre 2009 - 11 nov. 2008 à 21:26
3KyNoX Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 12 novembre 2009 - 12 nov. 2008 à 12:05
Bonjour.

Voici une question un peu bête mais j'utilise donc EncryptByPassPhrase pour crypter le contenu d'une textox de type password en ASP.NeT dont voici la syntaxe sous SQL Server 2008 Express :

            DECLARE @PassPhrase nvarchar(50)
            SET @PassPhrase = N'test'
           
            DECLARE @EncryptedPassword varbinary(256)
            SET @EncryptedPassword = EncryptByPassPhrase(@PassPhrase , N'123456789', NULL)

J'utilise donc un mot clef "test" pour crypter le contenu "123456789".

Vous noterez que les "N" juste avant le passphrase et le mot de passe servent à indiquer que le texte est en caractères unicode.

Quant je veux récupérer le contenu de ma colonne "MotDePasse" par DecryptByPassPhrase, jusque là, pas de soucis, cela fonctionne bien.

Mon souci, c'est que quand je souhaite intégrer ce code à l'intérieur d'une procédure stockée, je récupère le mot de passe en paramètre, et pas moyen de mettre le N pour le unicode devant. Et si je ne met pas ce N devant le mot de passe, le decryptage ne se fait pas correctement...

Exemple :

ALTER PROCEDURE dbo.blablabla

    @MotDePasse varchar(50)
   
AS
    BEGIN
   
        SET NOCOUNT ON

            DECLARE @PassPhrase nvarchar(50)
            SET @PassPhrase = N'cow'
           
            DECLARE @EncryptedPassword varbinary(256)
            SET @EncryptedPassword = EncryptByPassPhrase(@PassPhrase , @MotDePasse, NULL)

        RETURN
       
END

Avec la variable @MotDePasse, donc, je ne sais pas mettre ce : N devant

Merci pour l'aide

1 réponse

3KyNoX Messages postés 17 Date d'inscription lundi 21 janvier 2008 Statut Membre Dernière intervention 12 novembre 2009
12 nov. 2008 à 12:05
Re-Bonjour, j'ai réussi alors je post la solution :


ALTER PROCEDURE blablabla


@Login varchar(10),

@MotDePasse varchar(50)


AS

BEGIN


SET NOCOUNT ON


DECLARE @PassPhrase nvarchar(50)

SET @PassPhrase = N'test'


DECLARE @MotDePasseModifie nvarchar(50)

SET @MotDePasseModifie = N''

SELECT @MotDePasseModifie = @MotDePasseModifie + @MotDePasse


DECLARE @EncryptedPassword varbinary(256)

SET @EncryptedPassword = EncryptByPassPhrase(@PassPhrase , @MotDePasseModifie, NULL)


INSERT INTO dbo.aspnet_Colocation (Colocation, MotDePasse)

VALUES (@Colocation, @EncryptedPassword)


RETURN


END


En clair il fallait créer une autre variable (@MotDePasseModifie) et
appliquer le "N''" à l'intérieur et concaténer @MotDePasseModifie avec
@MotDePasse.


@+
0
Rejoignez-nous