Bonjour,
Je travaille présentement avec un vieux logiciel codé en VB6 qui roule en SQL2000. Nous allons par contre le migrer très bientôt en SQL 2008.
Je dois modifier le logiciel afin de demander un code d'usager et un mot de passe pour une nouvelle connection sur une machine AS/400. J'aimerais éviter que les usagers aient à entrer une nouvelle fois le mot de passe. Je regarde donc pour crypter le mot de passe et le sauver dans une BD SQL.
C'était ma mise en situation.
Voici ce que j'ai trouvé en SQL.
Je me suis créée une table avec un champ varbinary(128) dans lequel je voudrais sauvegarder le mot de passe crypté :
Et voici mon code cryptage en SQL :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 CREATE TABLE [dbo].[AccesUsager]( [CodeUsager] [char](10) NOT NULL, [Acces] [varbinary](128) NOT NULL, [NoCie] [int] NOT NULL, [Admin] [bit] NOT NULL, CONSTRAINT [PK_AccesUsager] PRIMARY KEY CLUSTERED ( [CodeUsager] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY]
Tout fonctionne, le select retourne bien mon string 'ABC123'.
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 CREATE CERTIFICATE MonCertificat ENCRYPTION BY PASSWORD = 'MaCle' WITH SUBJECT = 'Accès AS/400 pour Picsou', EXPIRY_DATE = '12/31/2049'; CREATE SYMMETRIC KEY ClePicsou WITH ALGORITHM = AES_256 ENCRYPTION BY CERTIFICATE MonCertificat OPEN SYMMETRIC KEY ClePicsou DECRYPTION BY CERTIFICATE MonCertificat WITH PASSWORD = 'MaCle' UPDATE AccesUsager SET Acces = ENCRYPTBYKEY(Key_GUID('ClePicsou'), 'ABC123') SELECT CONVERT(varchar, DecryptByKey(Acces)) AS 'Valeur Décrypté' FROM AccesUsager
Première question : que pensez vous de mon code ? Est-ce que l'utilisation de l'algorithm AES_256 est ok ?
Deuxième question : Dans les fait, mes deux ligne de CREATE, je n'ai pas besoin de les refaire ad vitam eternam n'est-ce pas? Un coup mon certificat et ma clé de créé, c'est fait?
Troisième Question et la plus importante : Qu'est-ce que je fais avec ma clé? Je veux dire, au niveau de mon code VB6, si je veux encrypter et décrypter mon mot de passe pour le passer en paramètre dans mon connection string, j'ai besoin de la clé. Je la hardcode dans mon code ? C'est quoi le meilleur moyen de fonctionner ?
Merci beaucoup pour vos informations !![]()
Partager