makepass.pyを書いてみた
こちらのソース を参考に、Pythonでmakepass.pyを作ってみました
# -*- coding: utf-8 -*-
import getpass
import hashlib
import base64
import re
import subprocess
def makepass():
seed = getpass.getpass("Hit many keys randomly. ")
while len(seed) < 100:
print "I need more random keys."
seed += getpass.getpass("Hit many keys randomly. ")
d = hashlib.sha512(seed).digest()
e = base64.b64encode(d)
e = re.sub("[\+\/=\n]", "", e)
p = subprocess.Popen(["pbcopy"], stdin = subprocess.PIPE)
p.communicate(e)
print "Thanks. I've saved a password-like string in your clipboard."
if __name__ == "__main__":
makepass()
使用方法は次の通りです
$ python makepass.py
Hit many keys randomly. ← キーボード乱打してください。Enterで入力
Thanks. I've saved a password-like string in your clipboard. ← クリップボードにBase64でエンコードされた文字(英数字)が出力されています
Mac OSΧ 10.8.2 + Python 2.7.3で動作確認しております
- 本家様との差異
- 乱打したキーが表示されないように、標準モジュールであるgetpassを使用
- Windowsならwin32api使えば良さそうですが、Macでの開発だったのでsubprocessを使用