· 

パスワード生成プログラム

パスワード生成プログラムを公開します。

ランダムで意味のないパスワードを瞬時に作ります。

生成したパスワードはクリップボードにコピーされますので必ず保存しておいてください。

コードは以下の通りです。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()