Python
Linux
セキュリティ

Pythonで暗号化したパスワードを作成したい

仕事で、ユーザーの作成をAnsibleでするときに

「他人にレビュー依頼するコードに平文のパスワード載せちゃだめだよ、これ暗号化して置いて」

という、オーダーがあったのでこのスクリプトを置いておけば勝手にいい感じに暗号化して使えるじゃんと思って作成しました。

とりあえず作ったもの

動作検証環境
python 2.7
CentOS7
Linuxであればとりあえずこれで動くはず。

3系まもっといいライブラリあると思うのでぐぐってください
Macだと何故かsaltがうまくいきませんでした(誰か教えてほしい)

pwgen.py
 #!/usr/bin/env python 

 import getpass 
 import crypt 
 import hashlib 
 import random 
 pw = getpass.getpass() 
 salt = hashlib.sha1(str(random.random())).hexdigest() 
 print crypt.crypt( pw , "$1$" + salt + "$")

 適当な使い方

使い方は、Bashが使える空間で

$ ./pwgen.py

を唱えるだけ。そうすると以下のように聞かれるので好きなパスワードを入力してください。
パスワードなので念の為コンソール上には文字は出現しない設定

Password:
$1$81480a47$weZFMjRwhLGpFV30gwdGP0

あとはこんな感じに吐き出されていればUNIXで使えるパスワードハッシュの出来上がり

ansibleのパスワードとかUnixの/etc/shadowあたりにコピペしてぶち込んでおけばユーザーのパスワードを追加することができます。

なんかこれバックに入れておけばWebの画面で勝手にパスワード生成とかできそう(今度やろうかな)

参考リンク  

もちろん、参考ありき(参考にした偉大な方々のリンクは下記)

どなたかMacでうまくUnixでユーザ追加するときのsaltの生成のやり方を知っている人がいれば教えてほしいです。

sha512 でハッシュ化されたパスワードを生成するワンライナー
Pyrhon2.7 36.5. crypt --- Unix パスワードをチェックするための関数
SHA512でハッシュされたSALTつきパスワードを生成するには