PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 02/06/2013 21:27:06

maya
Membre

cacher son mot de passe

Bonjour,
J'ai crée une base de données sous Postgresql contenant une colonne nommée password, je voudrais si possible rendre les mots de passes non visible.
J'ai cherché de la documentation , j'ai trouvé des fonctions encrypt() et decrypt() qui ne marche malheureusement pas, postgre ne les reconnait pas.

Pouvez m’éclaircir sur ce sujet.
Merci d'avance pour votre aide.

Hors ligne

#2 02/06/2013 21:35:13

gleu
Administrateur

Re : cacher son mot de passe

Vous pouvez les chiffrer grâce au module pgcrypto (http://docs.postgresql.fr/9.2/pgcrypto.html) ou ne pas les rendre lisibles par certains utilisateurs (voir la commande GRANT/REVOKE).


Guillaume.

Hors ligne

#3 16/06/2013 11:48:19

junior222
Membre

Re : cacher son mot de passe

Salut moi j'ai le méme problème je veux enregistrer un utilisateur avec un mot de passe crypté voilà ce que je fait:
insert into utilisateur (login,mot_de_passe) values('admin', encrypt('admin','1234','aes'))
mais on me dit que la fonction encrypt n'existe pas comment faire?

Hors ligne

#4 16/06/2013 13:54:04

rjuju
Administrateur

Re : cacher son mot de passe

Bonjour,

avez-vous installé l'extension pgcrypto ?

Hors ligne

#5 17/06/2013 11:22:50

junior222
Membre

Re : cacher son mot de passe

non comment faire svp?

Hors ligne

#6 17/06/2013 12:26:57

rjuju
Administrateur

Re : cacher son mot de passe

Si vous êtes en postgresql version 9.1 ou supérieure, il suffit de faire "CREATE EXTENSION pgcrypto;"

Hors ligne

#7 17/06/2013 12:57:54

junior222
Membre

Re : cacher son mot de passe

merci sa marche bien lorsque je veux decrypter sa me dit ceci:
ERREUR:  decrypt error: Data not a multiple of block size

********** Erreur **********

ERREUR: decrypt error: Data not a multiple of block size
État SQL :39000
voilà mon code:
select id, decrypt('mot_de_passe','1234','aes') from utilisateur

Hors ligne

#8 17/06/2013 21:48:47

MitsuTomoe
Membre

Re : cacher son mot de passe

Bonjour,
j'ai l'impression que les quotes autour de mot_de_passe sont en trop :

select id, decrypt(mot_de_passe,'1234','aes') from utilisateur where ...

L'exemple donné dans la doc parle de : encrypt(data, 'fooz', 'bf')

La doc est là


Alex

Hors ligne

#9 18/06/2013 10:46:19

junior222
Membre

Re : cacher son mot de passe

lorsque j'enlève les quottes une autre erreur survient que voilà:
ERREUR:  la fonction decrypt(character varying, unknown, unknown) n'existe pas
LINE 1: select id, decrypt(mot_de_passe,'1234','aes') from utilisate...
                   ^
HINT:  Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.

********** Erreur **********

ERREUR: la fonction decrypt(character varying, unknown, unknown) n'existe pas
État SQL :42883
Astuce : Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
Caractère : 12
apparemment cette fonction prend comme premier paramètre des bites et non une chaine de caractère. Que faire?

Hors ligne

#10 18/06/2013 21:56:43

MitsuTomoe
Membre

Re : cacher son mot de passe

Je crois que vous n'avez pas créé l'extension pgcrypto, comme indiqué par rjuju . Exemple :

$ psql
psql (9.2.4)
Saisissez « help » pour l'aide.

conclavi_test=# select encrypt('azerty','fooz','bf');
ERREUR:  la fonction encrypt(unknown, unknown, unknown) n'existe pas
LIGNE 1 : select encrypt('azerty','fooz','bf');
                 ^
ASTUCE : Aucune fonction ne correspond au nom donné et aux types d'arguments.
Vous devez ajouter des conversions explicites de type.
conclavi_test=# \dx
                Liste des extensions installées
   Nom   | Version |   Schéma   |         Description          
---------+---------+------------+------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
(1 ligne)

conclavi_test=# create extension pgcrypto;
CREATE EXTENSION
conclavi_test=# \dx
                Liste des extensions installées
   Nom    | Version |   Schéma   |         Description          
----------+---------+------------+------------------------------
 pgcrypto | 1.0     | public     | cryptographic functions
 plpgsql  | 1.0     | pg_catalog | PL/pgSQL procedural language
(2 lignes)

conclavi_test=# select encrypt('azerty','fooz','bf');
      encrypt       
--------------------
 \x888475ea29dbb241
(1 ligne)

conclavi_test=# 

Alex

Hors ligne

#11 19/06/2013 14:40:58

junior222
Membre

Re : cacher son mot de passe

j'ai résolu mon problème en regardant la  doc :
Pour crypter j'utilise ceci:
insert into utilisateur (login,mot_de_passe)values ('admin1',crypt('admin1',gen_salt('bf')))
et pour me connecter à mon application j'utilise ceci:
select mot_de_passe=crypt('admin',mot_de_passe) from utilisateur where login='admin'
merci à tous

Hors ligne

#12 18/12/2017 16:24:10

Re : cacher son mot de passe

Bonjour, je recherche un algorithme qui me permet de crypter (avec le salt connu de moi) et de decrypter (avec le même salt).
Est il possible de décrypter (l'inverser de la fonction encrypt) ?

merci

Hors ligne

#13 18/12/2017 16:31:20

ruizsebastien
Membre

Re : cacher son mot de passe

Bonjour,

(Il est préférable d'ouvrir un nouveau sujet quand vous avez une nouvelle question et ne pas rebondir sur un sujet précédent).

Oui il y a la fonction decrypt de pgcrytpo :
https://docs.postgresql.fr/9.6/pgcrypto.html


Cordialement,

Sébastien.

Hors ligne

Pied de page des forums