2010-12-02 21 views
4

Notre serveur dovecot et notre serveur de messagerie authentifient les utilisateurs à l'aide des condensés SHA1. Nous ne pouvons pas vraiment changer le résumé actuel parce que nous avons tellement d'utilisateurs et que nous ne voulons pas qu'ils aient à recréer tous leurs mots de passe.Créez un résumé SHA1 dovecot à l'aide de bash ou python ou d'un autre outil de ligne de commande linux

Nous aimerions un moyen plus simple de créer un résumé à mettre dans la base de données pour nos utilisateurs (et éventuellement créer une interface web afin qu'ils puissent le changer eux-mêmes).

Actuellement, nous créons la digestion en utilisant la commande linux:

dovecotpw -s SHA1 

Nous voulons changer parce que dovecotpw n'est pas scriptable (du moins pas sans utiliser attendre ou similaire). Cependant, tout ce que j'ai essayé (sha1sum, sha1 de mysql, hashlib.sha1 de python) produit quelque chose de très différent de la commande dovecotpw.

est inférieure à la sortie de différentes commandes pour le mot: Mot de passe

dovecotpw -> W6ph5Mm5Pz8GgiULbPgzG37mj9g= 
sha1sum -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 
python hashlib.sha1() -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 
mysql sha1() -> 5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8 

il ressemble colombier est celui qui fait les choses différemment. Malheureusement, c'est celui dont j'ai besoin pour créer.

Une idée est comment je peux obtenir le dovecot sha1 à partir d'une commande scriptable?

Merci.

Répondre

7

Vous devez encoder en base64 le condensé binaire pour le mettre dans leur format.

>>> import hashlib 
>>> import base64 

>>> p = hashlib.sha1('password') 
>>> base64.b64encode(p.digest()) 
'W6ph5Mm5Pz8GgiULbPgzG37mj9g=' 

EDIT: En passant, si vous préférez le faire à partir d'un terminal/script bash, vous pouvez faire

$ echo -n 'password' | openssl sha1 -binary | base64  
W6ph5Mm5Pz8GgiULbPgzG37mj9g= 

En outre, vous pouvez dire dovecotpw n'a pas donné une hexdigest de le hachage plus parce qu'il a plus les chars ne sont pas tous hexadécimaux [0-9a-f]. L'utilisation de caractères [A-Za-z0-9 + /] avec la fin = suggère qu'il s'agissait d'une conversion en base64 du hachage.

1

La sortie de dovecotpw est codée en base64.