Crypt & decrypt passwd

Le
Fouff
Bonjour à tout le monde.

Je me trouve confronté à un petit soucis.
J'ai un programme qui demande à un utilisateur de créer un login et mdp.
Ce mdp devant être écrit dans un fichier texte, il devra idéalement être crypté d'une manière ou
d'une autre.

Mais, et c'est là que vient mon soucis, je veux que cet utilisateur puisse réouvrir le programme et
modifier son mdp, en ayant le champs approprié pré-rempli avec son ancienne valeur (masquée par * ou
autre, mais c'est une autre histoire déjà résolue).

Alors :
crypter une chaine de caractère ne me pose pas de soucis.
l'écrire dans le fichier encore moins !
Je me sort bien de la relecture dans fichier.
Par contre, pour réafficher cette chaine décryptée ben là je m'en sors nettement moins bien !

J'ai essayé md5, mais boum, dans le mur (aïe !) .

il semble que je n'aie pas la lib crypt installée avec mon install par défaut de python 2.5.1 (win xp).

Auriez vous un moyen de m'aider à me sortir de ce problème ?

Dans l'attente, je vous remercie de votre attention.
Bye
Fouff
Questions / Réponses high-tech
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
William Dode
Le #19580281
On 16-06-2009, Fouff wrote:
Bonjour à tout le monde.

Je me trouve confronté à un petit soucis.
J'ai un programme qui demande à un utilisateur de créer un login et mdp.
Ce mdp devant être écrit dans un fichier texte, il devra idéalement être crypté d'une manière ou
d'une autre.

Mais, et c'est là que vient mon soucis, je veux que cet utilisateur puisse réouvrir le programme et
modifier son mdp, en ayant le champs approprié pré-rempli avec son ancienne valeur (masquée par * ou
autre, mais c'est une autre histoire déjà résolue).



C'est pas à toi de t'en occuper mais au navigateur de l'utilisateur.


Alors :
crypter une chaine de caractère ne me pose pas de soucis.
l'écrire dans le fichier encore moins !
Je me sort bien de la relecture dans fichier.
Par contre, pour réafficher cette chaine décryptée ... ben là je m'en sors nettement moins bien !

J'ai essayé md5, mais ... boum, dans le mur (aïe !) .



Si, de ton côté tu stocke un md5 du mot de passe plutôt que le mot de
passe crypté. Ainsi tu es sûr que personne ne pourra retrouver le mot de
passe chez toi en cas d'intrusion. Pour vérifier la validité du mot de
passe tu compare ton md5 avec celui du mot de passe saisi.


--
William Dodé - http://flibuste.net
Informaticien Indépendant
Fouff
Le #19583531
William Dode a écrit :
On 16-06-2009, Fouff wrote:
Bonjour à tout le monde.

Je me trouve confronté à un petit soucis.
J'ai un programme qui demande à un utilisateur de créer un login et mdp.
Ce mdp devant être écrit dans un fichier texte, il devra idéalement être crypté d'une manière ou
d'une autre.

Mais, et c'est là que vient mon soucis, je veux que cet utilisateur puisse réouvrir le programme et
modifier son mdp, en ayant le champs approprié pré-rempli avec son ancienne valeur (masquée par * ou
autre, mais c'est une autre histoire déjà résolue).



C'est pas à toi de t'en occuper mais au navigateur de l'utilisateur.

Alors :
crypter une chaine de caractère ne me pose pas de soucis.
l'écrire dans le fichier encore moins !
Je me sort bien de la relecture dans fichier.
Par contre, pour réafficher cette chaine décryptée ... ben là je m'en sors nettement moins bien !

J'ai essayé md5, mais ... boum, dans le mur (aïe !) .



Si, de ton côté tu stocke un md5 du mot de passe plutôt que le mot de
passe crypté. Ainsi tu es sûr que personne ne pourra retrouver le mot de
passe chez toi en cas d'intrusion. Pour vérifier la validité du mot de
passe tu compare ton md5 avec celui du mot de passe saisi.




Tout d'abord merci d'avoir répondu.

Petite précision, ce n'est pas un navigateur, ce sera (peut-être si les conditions de temps, de
volonté ... sont toujours là) une application à part entière.
Celle ci se connectera à une bdd.
J'aurai donc une première "sous-application" qui configurera l'accès à la bdd (catalogue, non, pass,
admin et admin pass).
Ces 2 mots de passe seront effectivement écris cryptés dans le fichier texte de config (md5 pour
l'instant en attendant mieux).
Mais je veux pouvoir les récupérer dans cette même "sous-application" pour la pré-remplir des
valeurs qui vont bien, et c'est à ce moment que j'ai besoin de "décrypter" les mdp.
La comparaison des mdp lors des logins me pose pas de problèmes, j'ai effectivement pas besoin de
les "décrypter" pour ça.

Cette application contiendra dans l'idéal, un panneau d'administration (utilisateurs, et vue
grossière du contenu).
Là, je voudrai que l'administrateur puisse voir les mdp des utilisateurs en clair !

Bref, je ne me contente pas que de créer des mdp puis faire des logins, je veux pouvoir les gérer,
et donc les voir en clair !

Merci de l'aide que vous m'apporterez (pas uniquement William Dode, hein, si d'autres se sentent de
m'aider, ils sont les bienvenus ;-) ).
NicolasP
Le #19583821
Fouff a écrit :
William Dode a écrit :
On 16-06-2009, Fouff wrote:
Bonjour à tout le monde.

Je me trouve confronté à un petit soucis.
J'ai un programme qui demande à un utilisateur de créer un login et mdp.
Ce mdp devant être écrit dans un fichier texte, il devra idéalement
être crypté d'une manière ou d'une autre.

Mais, et c'est là que vient mon soucis, je veux que cet utilisateur
puisse réouvrir le programme et modifier son mdp, en ayant le champs
approprié pré-rempli avec son ancienne valeur (masquée par * ou
autre, mais c'est une autre histoire déjà résolue).



C'est pas à toi de t'en occuper mais au navigateur de l'utilisateur.

Alors :
crypter une chaine de caractère ne me pose pas de soucis.
l'écrire dans le fichier encore moins !
Je me sort bien de la relecture dans fichier.
Par contre, pour réafficher cette chaine décryptée ... ben là je m'en
sors nettement moins bien !

J'ai essayé md5, mais ... boum, dans le mur (aïe !) .



Si, de ton côté tu stocke un md5 du mot de passe plutôt que le mot de
passe crypté. Ainsi tu es sûr que personne ne pourra retrouver le mot
de passe chez toi en cas d'intrusion. Pour vérifier la validité du mot
de passe tu compare ton md5 avec celui du mot de passe saisi.




Tout d'abord merci d'avoir répondu.

Petite précision, ce n'est pas un navigateur, ce sera (peut-être si les
conditions de temps, de volonté ... sont toujours là) une application à
part entière.
Celle ci se connectera à une bdd.
J'aurai donc une première "sous-application" qui configurera l'accès à
la bdd (catalogue, non, pass, admin et admin pass).
Ces 2 mots de passe seront effectivement écris cryptés dans le fichier
texte de config (md5 pour l'instant en attendant mieux).
Mais je veux pouvoir les récupérer dans cette même "sous-application"
pour la pré-remplir des valeurs qui vont bien, et c'est à ce moment que
j'ai besoin de "décrypter" les mdp.
La comparaison des mdp lors des logins me pose pas de problèmes, j'ai
effectivement pas besoin de les "décrypter" pour ça.

Cette application contiendra dans l'idéal, un panneau d'administration
(utilisateurs, et vue grossière du contenu).
Là, je voudrai que l'administrateur puisse voir les mdp des utilisateurs
en clair !

Bref, je ne me contente pas que de créer des mdp puis faire des logins,
je veux pouvoir les gérer, et donc les voir en clair !

Merci de l'aide que vous m'apporterez (pas uniquement William Dode,
hein, si d'autres se sentent de m'aider, ils sont les bienvenus ;-) ).



A ma connaissance, le cryptage MD5 est fait pour ne pas pouvoir faire la conversion inverse. Donc, une fois que c'est crypté... c'est crypté. Comme William l'a dit, il faut alors comparer les MD5 entre elles pour vérifier que le mot de passe saisi correspond au mot de passe mémorisé.
Dans ton cas, la solution serait peut-être de stocker le mot de passe en clair dans un fichier et de crypter le fichier à l'aide d'une clé privée. Lors de l'utilisation tu utilise la clé privée pour décrypter le fichier. Bien sûr, il faut utiliser un cryptage réversible.
Comme je ne suis pas spécialiste de la chose, je ne pourrais pas de dire ce qu'il faut utiliser. Mais je suis sûr que quelqu'un d'autre à la réponse.

Nicolas
Eric Brunel
Le #19583991
Fouff wrote:
[snip]
Cette application contiendra dans l'idéal, un panneau d'administration


(utilisateurs, et vue
grossière du contenu).
Là, je voudrai que l'administrateur puisse voir les mdp des utilisateurs en


clair !

Bref, je ne me contente pas que de créer des mdp puis faire des logins, je


veux pouvoir les gérer,
et donc les voir en clair !



On a le droit de te dire que ce n'est pas une bonne idée? Le vénérable Unix se
passe de la possibilité de décrypter des mots de passe depuis fort longtemps
déjà, et ça marche plutôt bien... Donc la question, c'est: pourquoi veux-tu
faire ça? Pourquoi l'administrateur aurait accès aux mots de passe en clair?
Lui offrir la possibilité de les changer, ce n'est pas assez?

De toutes façons, si tu as vraiment besoin de faire ça, md5 n'est clairement
pas adapté, vu que PAQJS, il est destructif. Donc pas de "décryptage"
possible. Les deux idées qui me viennent pour ça sont:
- Le codec rot13
(http://docs.python.org/library/codecs.html#standard-encodings): ça, c'est
vraiment du de base de chez de base:
mdp = 'MonSuperMotDePasse'
enc = mdp.encode('rot13')
enc






'ZbaFhcreZbgQrCnffr'
enc.decode('rot13')






u'MonSuperMotDePasse'
Ca a seulement l'intérêt de se décoder tout seul; point de vue sécurité, c'est
0. Pas de clef d'encodage, donc un même mot de passe aura toujours le même
encodage (et ça, c'est Mal(TM)). Et c'est le premier truc auquel tout le monde
pensera...
- Sinon, l'artillerie lourde: GPG (http://www.gnupg.org/index.fr.html +
http://www.amk.ca/python/code/gpg peut-être?). Mais même ça, ce n'est pas
vraiment adapté: le cryptage/décryptage se base sur un système de clef
publique et clef privée, et toutes les deux devront être embraquées dans
l'appli si tu veux pouvoir décrypter. Donc point de vue sécurité, c'est
toujours pas terrible.

Il y a certainement d'autres solutions. Je sais que j'en avais trouvé une
jadis quelque part sur le net, mais je ne retrouve plus. La page de Wikipedia
sur la cryptographie peut être un bon point de départ
(http://fr.wikipedia.org/wiki/Cryptographie).

J'espère que ça t'aide un peu quand même. Bon courage!
- Eric -
William Dode
Le #19584271
On 17-06-2009, Fouff wrote:

... les mots de passe...

Mais je veux pouvoir les récupérer dans cette même "sous-application" pour la pré-remplir des
valeurs qui vont bien, et c'est à ce moment que j'ai besoin de "décrypter" les mdp.
La comparaison des mdp lors des logins me pose pas de problèmes, j'ai effectivement pas besoin de
les "décrypter" pour ça.



Ok, c'est différent alors, md5 n'est pas fait pour ça, il te faut la
librairie pycrypto
http://www.dlitz.net/software/pycrypto/

a+

--
William Dodé - http://flibuste.net
Informaticien Indépendant
Sysadmin
Le #19587221
Fouff a écrit :
Bonjour à tout le monde.

Je me trouve confronté à un petit soucis.
J'ai un programme qui demande à un utilisateur de créer un lo gin et mdp.
Ce mdp devant être écrit dans un fichier texte, il devra idà ©alement être
crypté d'une manière ou d'une autre.

Mais, et c'est là que vient mon soucis, je veux que cet utilisateu r
puisse réouvrir le programme et modifier son mdp, en ayant le cham ps
approprié pré-rempli avec son ancienne valeur (masquée p ar * ou autre,
mais c'est une autre histoire déjà résolue).

Alors :
crypter une chaine de caractère ne me pose pas de soucis.
l'écrire dans le fichier encore moins !
Je me sort bien de la relecture dans fichier.
Par contre, pour réafficher cette chaine décryptée ... b en là je m'en
sors nettement moins bien !

J'ai essayé md5, mais ... boum, dans le mur (aïe !) .

il semble que je n'aie pas la lib crypt installée avec mon install par
défaut de python 2.5.1 (win xp).

Auriez vous un moyen de m'aider à me sortir de ce problème ?

Dans l'attente, je vous remercie de votre attention.
Bye
Fouff



MD5 est une somme de contrôle, fonction non bijective. Chaque chaine de
caractère a sa propre somme de contrôle MD5.

L'intérêt de cette fonction est de stocker les couples login/md p de
façon sécurisée. Un pirate récupérant la liste l ogin/md5 ne pourra
jamais connaître les mots de passe des utilisateurs.

Lorsqu'un utilisateur se connecte au système la comparaison
md5(motdepassesoumisenclair) / md5stocké permet de s'assurer de la
validité du mot de passe utilisé par l'utilisateur.

La fonction md5 connaît quelques collisions md5(chaineA) = md5(cha ineB)
mais qui pour l'instant restent du domaine de l'exploit mathématique . Il
existe la fonction sha256 pour laquelle aucune collision n'a encore é té
trouvée.

Cette méthode de stocker les couples login/md5 est très largeme nt utilisée.

Concernant le besoin de changement, sauf besoin particulier, il n'est
pas utile de redonner l'ancienne valeur. Je dirais même ce n'est pas
préférable.

Les fonctions md5 et sha sont disponibles dans la librairie hashlib pour
python 2.6, pour 2.5 c'est la librairie md5
Publicité
Poster une réponse
Anonyme