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で複雑なパスワードを簡単に生成する - ガンマソフト
総務省がパスワードの定期的な変更は不要であると方針転換したことが話題になっています。 いま話題になっている「パスワードは頻繁に変えるな」の総務省のページです。やはり一次資料がわかり易いです。 設定と管...
PySimpleGUI
スポンサーリンク
のんびりブログ

コメント

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