亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python 隨機密碼生成器的實現示例

 更新時間:2023年11月23日 09:43:12   作者:mYlEaVeiSmVp  
隨機密碼生成器是一種非常有用的工具,它可以幫助我們生成隨機的、復雜的密碼,提高我們的賬戶安全性,本文就來介紹一下python 隨機密碼生成器的實現示例,感興趣的可以了解一下

最近在研究PySimpleGUI庫,把之前寫的一個隨機密碼生成器改成GUI版本發(fā)出來,有興趣的兄弟們可以拿走。

因為能力有限,目前只能寫生成一個隨機密碼的Gui版本,等我學了更多的內容再慢慢完善。

核心代碼很簡單,界面也很粗陋。

如果你能寫得更好,不要噴,直接回帖發(fā)出來讓我參考下,謝謝。

代碼:

from pyperclip import copy
import PySimpleGUI as sg
import random
import string
 
 
def get_passwords(xiaoxie=True,
                  daxie=True,
                  shuzi=True,
                  biaodian=True,
                  zidingyi='',
                  qianzhui='',
                  houzhui='',
                  paichu='',
                  pwd_len=11,
                  pwd_count=1):
    pwd_list = []
    if not any([xiaoxie, daxie, shuzi, biaodian]): return '至少要勾選一種密碼類型!'
    words = zidingyi
    if xiaoxie: words += string.ascii_lowercase  #小寫字母
    if daxie: words += string.ascii_uppercase  #大寫字母
    if shuzi: words += string.digits  #數字
    if biaodian: words += string.punctuation  #標點
    #規(guī)避樣本數量 < 密碼長度的問題
    if len(words) <= pwd_len: words = words * (pwd_len // len(words) + 1)
 
    zhui_len = len(f'{qianzhui}{houzhui}')
    if pwd_len < zhui_len:
        return '密碼長度<前后綴的長度之和!'.split() * 3
    for _ in range(pwd_count):
        chosen = ''.join(random.sample(words, pwd_len))  #生產隨機列表
 
        chosen = f'{qianzhui}{chosen}{houzhui}'  #加前后綴
 
        if set(paichu):  #排除字符
            for i in set(paichu):
                chosen = chosen.replace(i, '')
 
        pwd_list.append(chosen.strip())  # 組成字符串
    return [
        f'{str(n).zfill(len(str(pwd_count)))}. {i}'
        for n, i in enumerate(pwd_list, 1)
    ]
 
 
def gui():  # sourcery skip: do-not-use-bare-except
    sg.theme('GrayGrayGray')  # 設置當前主題
    xuan_frame = [
        sg.Checkbox(
            '小寫a-z',
            default=True,
            key='小寫',
        ),
        sg.Checkbox(
            '大寫A-Z',
            default=True,
            key='大寫',
        ),
        sg.Checkbox(
            '數字0-9',
            default=True,
            key='數字',
        ),
        sg.Checkbox(
            '標點',
            default=True,
            key='標點',
        ),
    ],
 
    zidingyi_frame = [
        sg.Text('自定義字:'),
        sg.InputText(
            key='自定義',
            size=(10, 11),
        ),
        sg.Text(' 前綴:'),
        sg.InputText(
            key='前綴',
            size=(5, 11),
        ),
        sg.Text(' 后綴:'),
        sg.InputText(
            key='后綴',
            size=(5, 11),
        ),
    ],
 
    paichu_frame = [
        sg.Text('排除字符:'),
        sg.InputText(
            key='排除',
            size=(40, 11),
        ),
    ],
    chang_frame = [
        sg.Text('密碼長度'),
        sg.Slider(
            range=(5, 55),
            default_value=6,
            orientation='horizontal',  #滑塊方向
            tick_interval=10,  #顯示的步長
            enable_events=True,
            key='長度',
            size=(41, 20))
    ],
    shu_frame = [
        sg.Text('密碼個數'),
        sg.Slider(
            range=(5, 55),
            default_value=5,
            orientation='horizontal',  #滑塊方向
            tick_interval=10,  #顯示的步長
            enable_events=True,
            key='個數',
            size=(41, 20))
    ],
 
    layout = [[
        sg.Frame(
            '',
            xuan_frame,
            size=(400, 40),
            pad=(5),
        ),
    ], [
        sg.Frame(
            '',
            zidingyi_frame,
            size=(400, 40),
            pad=(5),
        ),
    ], [sg.Frame(
        '',
        paichu_frame,
        size=(400, 40),
        pad=(5),
    )], [sg.Frame(
        '',
        chang_frame,
        size=(400, 80),
        pad=(5),
    )], [sg.Frame(
        '',
        shu_frame,
        size=(400, 80),
        pad=(5),
    )],
              [
                  sg.Listbox([],
                             key='結果',
                             size=(57, 10),
                             horizontal_scroll=True,
                             highlight_background_color='gray',
                             font=('宋體', 10),
                             enable_events=True,
                             pad=(5, 10))
              ],
              [
                  sg.Button('清空', key='清空', pad=(10, 10), enable_events=True),
                  sg.Button(
                      '復制所有密碼',
                      key='復制所有密碼',
                      button_color='#118890',
                      enable_events=True,
                  ),
              ],
              [
                  sg.Text(
                      '取消或勾選密碼類型后,要拖動滑塊,才能重新生成',
                      text_color='#0000ff',
                      key='提示',
                      font=('宋體', 10),
                      justification='center',
                  )
              ]]
 
    # 創(chuàng)建展示窗口8
    window = sg.Window('隨機密碼.220921 - [url=mailto:wkdxz@52pojie.cn]wkdxz@52pojie.cn[/url]   ',
                       layout,
                       font=('微軟雅黑', 10),
                       size=(400, 610),
                       element_justification='center')
 
    # 事件循環(huán)并獲取輸入值
    while True:
        event, values = window.read()
        if not event:
            break
        elif event != '復制所有密碼':  #任何事件都會生成密碼
            pwds = get_passwords(values['小寫'], values['大寫'], values['數字'],
                                 values['標點'], values['自定義'], values['前綴'],
                                 values['后綴'], values['排除'], int(values['長度']),
                                 int(values['個數']))
        # print(event, values)
        if event in ['個數', '長度']:
            window['結果'].update(pwds)
            window['提示'].update('點擊單條密碼,可復制到剪貼板')
 
        if event == '結果':
            try:
                pwd = values['結果'][0].split('.', 1)[1].strip()
                copy(pwd)
                window['提示'].update(f'已復制:\n{pwd}')
            except:
                window['提示'].update('取消或勾選密碼類型后,要拖動滑塊,才能重新生成')
 
        if event == '清空':
            window['長度'].update(0)
            window['個數'].update(0)
            window['結果'].update('')
            window['提示'].update('')
            window['自定義'].update('')
            window['前綴'].update('')
            window['后綴'].update('')
            window['排除'].update('')
 
        if event == '復制所有密碼':
            try:
                passwords = [i.split('.', 1)[1].strip() for i in pwds]
                copy('\n'.join(passwords))
                window['提示'].update(f'【所有】密碼({len(pwds)}條)已復制到剪貼板')
            except:
                window['提示'].update('取消或勾選密碼類型后,要拖動滑塊,才能重新生成')
    window.close()
 
 
if __name__ == '__main__':
    gui()

到此這篇關于python 隨機密碼生成器的實現示例的文章就介紹到這了,更多相關python 隨機密碼生成器內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • python實現抽獎小程序

    python實現抽獎小程序

    這篇文章主要為大家詳細介紹了python實現抽獎小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • 淺談django框架集成swagger以及自定義參數問題

    淺談django框架集成swagger以及自定義參數問題

    這篇文章主要介紹了淺談django框架集成swagger以及自定義參數問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • Python循環(huán)結構的應用場景詳解

    Python循環(huán)結構的應用場景詳解

    這篇文章主要介紹了Python循環(huán)結構的應用場景詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • Python中accumulate函數的用法詳解

    Python中accumulate函數的用法詳解

    累積(accumulate)函數是Python標準庫itertools中的一個強大工具,用于對可迭代對象進行累積操作,下面我們將深入探討accumulate函數的用法,感興趣的小伙伴可以了解下
    2023-11-11
  • Python編程圖形庫之Pillow使用方法講解

    Python編程圖形庫之Pillow使用方法講解

    今天小編就為大家分享一篇關于Python編程圖形庫之Pillow使用方法講解,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2018-12-12
  • Python jieba庫分詞模式實例用法

    Python jieba庫分詞模式實例用法

    在本篇文章里小編給大家分享的是一篇關于Python jieba庫分詞模式實例用法,有興趣的朋友們可以學習參考下。
    2021-01-01
  • Python中的for循環(huán)詳情

    Python中的for循環(huán)詳情

    這篇文章主要介紹了Python中的for循環(huán),for語句實際上解決的是循環(huán)問題。在很多的高級語言中都有for循環(huán)(for loop)。下面就來簡單給大家介紹Python中的for循環(huán)的相關資料,需要的朋友可以參考一下
    2021-10-10
  • TensorFlow 2.0之后動態(tài)分配顯存方式

    TensorFlow 2.0之后動態(tài)分配顯存方式

    這篇文章主要介紹了TensorFlow 2.0之后動態(tài)分配顯存方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • python正則表達式re.group()用法

    python正則表達式re.group()用法

    本文主要介紹了python正則表達式re.group()用法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-08-08
  • Tensorflow--取tensorf指定列的操作方式

    Tensorflow--取tensorf指定列的操作方式

    這篇文章主要介紹了Tensorflow--取tensorf指定列的操作方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論