PySimpleGUIでランダムなパスワードを生成

スポンサーリンク
スポンサーリンク

動作している様子

全体のコード

import PySimpleGUI as sg
import string
import secrets

def pass_gen(size):
   chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
   return ''.join(secrets.choice(chars) for x in range(size))

sg.theme('Dark Blue 3')

layout = [
    [sg.Text('length', size=(8, 1)), sg.InputText('8')],
    [sg.Text('pass', size=(8, 1)), sg.InputText(key="output")],
    [sg.Submit(button_text='submit')]
]

window = sg.Window('PASS GEN', layout,size=(240, 100))

while True:
    event, values = window.read()

    if event is None:
        print('exit')
        break

    if event == 'submit':
        pass_length = int(values[0])
        pass1 = pass_gen(pass_length)
        window["output"].update(pass1)

window.close()

ランダムなパスワードを生成する部分

import string
import secrets

def pass_gen(size=12):
   chars = string.ascii_uppercase + string.ascii_lowercase + string.digits
   return ''.join(secrets.choice(chars) for x in range(size))

print(pass_gen(10))

プログラム解説

stringモジュール

string.ascii_uppercase
大文字 ‘ABCDEFGHIJKLMNOPQRSTUVWXYZ’

string.ascii_lowercase
小文字 ‘abcdefghijklmnopqrstuvwxyz’

string.digits
文字列 ‘0123456789’

secretsモジュール
パスワードやアカウント認証、セキュリティトークンなどの機密を扱うのに適した、暗号学的に強い乱数を生成することができる。

secrets.choice(sequence)
空でないシーケンスから要素をランダムに選択して返す。

join()
‘間に挿入する文字列’.join([連結したい文字列のリスト])

for num in range(5):
    print(num)

結果
0
1
2
3
4

参考サイト

Pythonで複雑なパスワードを簡単に生成する方法 - ガンマソフト
総務省がパスワードの定期的な変更は不要であると方針転換したことが話題になっています。 設定と管理のあり方|IDとパスワード|どんな危険があるの?|基礎知識|国民のための情報セキュリティサイト(総務省)...

コメント

タイトルとURLをコピーしました