Posted at

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

More than 1 year has passed since last update.

仕事で、ユーザーの作成を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つきパスワードを生成するには