パスワード生成プログラムを公開します。
ランダムで意味のないパスワードを瞬時に作ります。
生成したパスワードはクリップボードにコピーされますので必ず保存しておいてください。
コードは以下の通りです。pythonをインストールしてあれば拡張子をpywにして保存すればダブルクリックで開きます。
pythonをインストールしていない場合は こちら からEXEファイルをダウンロードしてご利用ください。ZIP圧縮してありますので解凍して任意の場所に保存してください。ダブルクリックで起動します。
パスワードの管理は専用ソフトをお勧めします。
http://www.woodensoldier.info/soft/idm.htm
パスワード生成機能も付いています。
# passWord.py
import string # Pythonでは、空白文字や英小文字や数字などがstringモジュールで定義されています。
import secrets # 乱数を生成するのにsecretsモジュールを使用しています
import tkinter # windowsGUIモジュール
import pyperclip # クリップボ-ドへのコピーモジュール インストールが必要 pip install pyperclip
# パスワード生成関数
def pass_gen(size=8): # size=8 デフォルトサイズ
# チェックボタンの確認
cb1 = "" # 数字チェックボタンの判定をリセット
if bln1.get(): # 数字チェックが有った場合0~9無い場合""
cb1 = string.digits # 数字
cb2 = "" # 大文字チェックボタンの判定をリセット
if bln2.get(): # 大文字チェックが有った場合A~Z無い場合""
cb2 = string.ascii_uppercase # 大文字
cb3 = "" # 小文字チェックボタンの判定をリセット
if bln3.get(): # 小文字チェックが有った場合a~z無い場合""
cb3 = string.ascii_lowercase # 小文字
cb4 = "" # 記号チェックボタンの判定をリセット
if bln4.get(): # 記号チェックが有った場合%&$#()無い場合""
cb4 = string.punctuation # 記号
chars = cb1 + cb2 + cb3 + cb4
if chars == "" :
chars = string.digits # チェックボタンがすべて外れていた場合数字(エラー回避)
return ''.join(secrets.choice(chars) for x in range(size))
# return:pass_gen(size=8)関数の返り値
# secrets.choice(chars) for x in range(size)で文字を抽出しています。
# これを ”.join( ) の( )の中に入れることにより、ひとつづつ抽出された文字・数値が結合されます。
# join( ) の 「” 」はシングルクォーテーションが2つで、文字を連結したい記号を中に入れます。
# ここでは、文字を空白で連結したいので”としています。
# for x in range(size) size回繰り返す。
# 実行ボタンをクリックしたら開始
def pw_gen():
# 入力値取得
keta = float(textketa.get()) # 桁数取得
keta = int(keta) # 整数に変換
pw = pass_gen(keta) # 桁数を引数にパスワード生成関数実行戻り値をpwへ格納
# ----------------------------------------結果を表示
labelpw = tkinter.Label(root, text=u'結果:',anchor='w',width=15) # anchor='w' 文字配置西
labelpw.place(x=10, y=200)
textpw = tkinter.Entry(root,width=20)
textpw.insert(tkinter.END, pw) # パスワードを表示
textpw.place(x=60, y=200)
textpw.bind('<Button-3>',showPopup) # ここで右クリックをした場合
# ----------------------------------------結果を表示ここまで
pyperclip.copy(pw) # パスワードをクリップボードにコピー
# 右クリックをした場合
def showPopup(event):
print("メニューを出してCtrl+Cを割り付ける方法がわからない")
# 閉じるボタンをクリックしたら終了
def close_window():
root.destroy()
# マウスをクリックしたときの処理
def delketa(event): # クリックイベント関数
textketa.delete(0,tkinter.END) # 桁数テキストボックス 入力値をデリート
# ---- ここからメイン ----
# ウインドウの作成
root = tkinter.Tk()
root.title("パスワード生成")
root.geometry("350x240")
# -------------------------------------------------桁数記入欄ここから
labelketa2 = tkinter.Label(root, text=u'桁数を入力して使用する文字などにチェックを\n入れ実行ボタンをクリックしてください。\n結果はクリップボードにコピーされています。',anchor='e',justify='left',width=40) # anchor='e',justify='left' 文字配置東左寄せ \n 改行
labelketa2['fg'] = "Red" # 赤で表示
labelketa2.place(x=60, y=5)
labelketa = tkinter.Label(root, text=u'桁数:',anchor='w',width=15) # anchor='w' 文字配置西
labelketa.place(x=10, y=40)
textketa = tkinter.Entry(root,width=5)
textketa.insert(tkinter.END, '10') # デフォルト桁数10
textketa.place(x=60, y=40)
textketa.bind('<Button>', delketa) # クリックイベント
# ------------------------------------------------桁数記入欄ここまで
#ボタンの作成
button = tkinter.Button(text = "実行",command = pw_gen) # 実行ボタン
button.place(x=10, y=70)
button = tkinter.Button(text = "終了", command = close_window) # 終了ボタン
button.place(x=60, y=70)
# チェックボタンON・OFF変数
bln1 = tkinter.BooleanVar()
bln2 = tkinter.BooleanVar()
bln3 = tkinter.BooleanVar()
bln4 = tkinter.BooleanVar()
bln1.set(True)
bln2.set(True)
bln3.set(True)
bln4.set(True)
# チェックボタン作成
chk1 = tkinter.Checkbutton(root, variable=bln1, text='数字0~9を使用する')
chk1.place(x=10, y=100)
chk2 = tkinter.Checkbutton(root, variable=bln2, text='大文字A~Zを使用する')
chk2.place(x=10, y=120)
chk3 = tkinter.Checkbutton(root, variable=bln3, text='小文字a~zを使用する')
chk3.place(x=10, y=140)
chk4 = tkinter.Checkbutton(root, variable=bln4, text='記号%&$#()等を使用する')
chk4.place(x=10, y=160)
#ウインドウの描画
root.mainloop()