Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Pages : 1
#1 18/02/2011 12:53:00
- Nico
- Membre
pgcrypto et changement de SGBD
Bonjour,
Pour ma petite base d'utilisateurs, j'envisage de crypter les mots de passe (en non réversible).
Je pensais utiliser la contrib pgcrypto de la manière suivante :
-- Mise à jour du nouveau champ pwd_crypt pour les mots de passe cryptés
UPDATE users
SET pwd_crypt = crypt(pwd, gen_salt('md5'));
Puis pour l'authentification, quelque chose comme :
SELECT *
FROM users
WHERE login = 'monlogin'
AND pwd_crypt = crypt('mon mot de passe en clair', pwd_crypt);
Cela fonctionne bien, mais je m'interrogeais sur un point : si je décide un jour de changer de SGBD (non non ce n'est pas mon intention, mais je préfère prévoir ), par exemple pour passer à MySQL, comment puis-je conserver mon système d'authentification avec mes mots de passe cryptés ? Existe-t-il des librairies équivalentes adaptables à d'autres SGBD ?
Idem si j'utilise un autre algo comme BlowFish à la place de md5...
Merci,
Nico
Hors ligne
#2 18/02/2011 12:59:26
- Marc Cousin
- Membre
Re : pgcrypto et changement de SGBD
Les fonctions utilisées par pg_crypto sont standard (md5, blowfish, etc…). Aucune idée de ce qui est implémenté dans MySQL par contre…
D'après leurs docs, ils en ont quand même un certain nombre. http://dev.mysql.com/doc/refman/5.5/en/ … tions.html
Ça ne sera, à mon avis, pas le plus gros problème que vous aurez si vous passez à MySQL plus tard. Ça risque plutôt d'être les problèmes d'intégrité de données, de non conformités SQL, etc…
Marc.
Hors ligne
#3 25/02/2011 13:06:01
- Nico
- Membre
Re : pgcrypto et changement de SGBD
J'ai effectué quelques tests entre PG et MySQL, les chaînes cryptées avec l'algo md5 ou DES en Postgres sont bien utilisables en MySQL avec la fonction encrypt(), par contre, je n'ai pas réussi à obtenir le même résultat entre PG et MySQL avec l'algo BlowFish ou XDES...
exemples :
pg=# SELECT crypt('test', gen_salt('md5'));
crypt
------------------------------------
$1$ymR4H7RQ$AKZlNgruvwuqY6GHN18tM1
(1 ligne)
mysql> SELECT encrypt('test', '$1$ymR4H7RQ$AKZlNgruvwuqY6GHN18tM1');
+-------------------------------------------------------+
| encrypt('test', '$1$ymR4H7RQ$AKZlNgruvwuqY6GHN18tM1') |
+-------------------------------------------------------+
| $1$ymR4H7RQ$AKZlNgruvwuqY6GHN18tM1 |
+-------------------------------------------------------+
1 row in set (0.00 sec)
=> ok
pg=# SELECT crypt('test', gen_salt('bf'));
crypt
--------------------------------------------------------------
$2a$06$mPgR6FYOoUDrnzBZrlqmGeIQGE.Li6DF3IuWx82fX7o0nLIZhNlQS
(1 ligne)
mysql> SELECT encrypt('test', '$2a$06$mPgR6FYOoUDrnzBZrlqmGeIQGE.Li6DF3IuWx82fX7o0nLIZhNlQS');
+---------------------------------------------------------------------------------+
| encrypt('test', '$2a$06$mPgR6FYOoUDrnzBZrlqmGeIQGE.Li6DF3IuWx82fX7o0nLIZhNlQS') |
+---------------------------------------------------------------------------------+
| $2rcByx51ejoM |
+---------------------------------------------------------------------------------+
1 row in set (0.00 sec)
=> pas ok
Hors ligne
Pages : 1