Python crypte du module ce qui est de la bonne utilisation des sels?

D'abord, le contexte: je suis en train de créer une ligne de commande outil basé sur (Linux)
nécessite une connexion. Comptes sur cet outil n'ont rien à voir avec
au niveau du système des comptes -- rien de tout cela ressemble à /etc/passwd.

Je suis de planification pour stocker les comptes d'utilisateur dans un fichier texte en utilisant le même format (à peu près) comme /etc/passwd.

En dépit de ne pas utiliser le système de mot de passe au niveau des fichiers, à l'aide de la crypte semblait
une bonne pratique à utiliser, plutôt que de les stocker mots de passe dans
texte clair. (Alors que la crypte est certainement mieux que de stocker les mots de passe dans
clair, je suis ouvert à d'autres façons de le faire.)

Ma crypte des connaissances est basé sur ceci:
https://docs.python.org/2/library/crypt.html

La documentation semble demander quelque chose qui n'est pas possible: "c'
est recommandé d'utiliser la pleine crypté mot de passe comme le sel lors de la vérification
pour un mot de passe."

Hein? Si je suis de la création de la crypté mot de passe (que, lors de la création d'un utilisateur
record) comment puis-je utiliser le mot de passe crypté comme un sel? Il
n'existe pas encore. (Je suis en supposant que vous devez utiliser le même sel pour la création et la vérification d'un mot de passe.)

J'ai essayé d'utiliser le mot de passe en clair comme du sel. Ce n'
de travail, mais a deux problèmes; on facilement surmontés, et l'un de sérieux:

1) Les deux premières lettres du mot de passe en clair sont inclus dans le
crypté mot de passe. Vous pouvez résoudre ce problème en n'écrit pas les deux premiers
des caractères dans le fichier:

user_record = '%s:%s:%s' % (user_name, crypted_pw[2:], user_type)

2) En utilisant le mot de passe en clair que le sel, vous semble
la réduction de la quantité d'entropie dans le système. J'ai peut-être suis
la mauvaise compréhension du but de la sel.

La meilleure pratique j'ai pu en tirer est d'utiliser les deux premières
les caractères de l'identifiant comme le sel. Serait-ce approprié,
ou est-il quelque chose que j'ai raté qui fait qu'un mauvais coup?

Ma compréhension d'un sel, c'est qu'il empêche le pré-calcul de mot de passe
hachages à partir d'un dictionnaire. Je pourrais utiliser un standard de sel pour tous
les mots de passe (comme mes initiales, "JS"), mais qui semble être de moins en moins
charge pour un attaquant que l'aide de deux personnages de chaque utilisateur nom d'utilisateur.

OriginalL'auteur Schof | 2008-12-01