仕事で、ユーザーの作成をAnsibleでするときに
「他人にレビュー依頼するコードに平文のパスワード載せちゃだめだよ、これ暗号化して置いて」
という、オーダーがあったのでこのスクリプトを置いておけば勝手にいい感じに暗号化して使えるじゃんと思って作成しました。
とりあえず作ったもの
動作検証環境
python 2.7
CentOS7
Linuxであればとりあえずこれで動くはず。
3系まもっといいライブラリあると思うのでぐぐってください
Macだと何故かsaltがうまくいきませんでした(誰か教えてほしい)
#!/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つきパスワードを生成するには