Python授权码生成器(密码生成器)

有时候我们需要为自己的产品设置一些使用权限 ,这就需要随机授权码生成器。当然这是简单的随机生成器,像Adobe这种授权码是需要一定的加密算法生成,然后再验证授权码是否正确,而不是简单的生成。

本文主要介绍wxpython中简单控件的使用和随机字符串的生成,包括:

①文本框
self.text = wx.TextCtrl(panel, wx.ID_ANY, pos=(0, 50), size=(484, 205), style=wx.TE_MULTILINE)
②按钮
button = wx.Button(panel, wx.ID_ANY, pos=(100, 255), size=(150, 50), label=’生成’)
button.Bind(wx.EVT_BUTTON, self.GenPassword)
③静态文字
rev = wx.StaticText(panel, -1, “生成的密码长度:”, pos=(5, 10))
rev.SetForegroundColour(“black”)
rev.SetBackgroundColour(“”) # 文字背景颜色,不输入为透明
④选择框
self.cb1 = wx.CheckBox(panel, label=’区分大小写’, pos=(380, 10))
self.cb1.SetValue(1)
⑤随机字符串用列表推导式即可

主要功能:生成指定长度的授权码,区分大小写,查找上一个

代码:

import random
import string
import wx


class InfoPanel(wx.Frame):
    def __init__(self, parent, id):
        wx.Frame.__init__(self, parent, id, "GenCode",  pos=(0, 0), size=(500, 380))
        panel = wx.Panel(self, -1)
        rev = wx.StaticText(panel, -1, "生成的密码长度:", pos=(5, 10))
        rev.SetForegroundColour("black")
        rev.SetBackgroundColour("")  # 文字背景颜色,不输入为透明
        button = wx.Button(panel, wx.ID_ANY, pos=(100, 255), size=(150, 50), label='生成')
        button.Bind(wx.EVT_BUTTON, self.GenPassword)
        button2 = wx.Button(panel, wx.ID_ANY, pos=(250, 255), size=(150, 50), label='清空')
        button2.Bind(wx.EVT_BUTTON, self.Clear)
        button3 = wx.Button(panel, wx.ID_ANY, pos=(280, 5), size=(80, 30), label='复制到剪切板')
        button3.Bind(wx.EVT_BUTTON, self.OnCopy)
        button4 = wx.Button(panel, wx.ID_ANY, pos=(100, 305), size=(300, 30), label='上一个')
        button4.Bind(wx.EVT_BUTTON, self.previous)
        self.text = wx.TextCtrl(panel, wx.ID_ANY, pos=(0, 50), size=(484, 205), style=wx.TE_MULTILINE)
        self.text2 = wx.TextCtrl(panel, wx.ID_ANY, pos=(110, 5), size=(150, 30))
        self.text2.AppendText(str(8))
        self.cb1 = wx.CheckBox(panel, label='区分大小写', pos=(380, 10))
        self.cb1.SetValue(1)
        self.count = 0
        self.genPwd = ""
        self.box = []

    def GenPassword(self, event):
        try:
            self.text.Clear()
            length = int(self.text2.GetValue())
            numOfNum = random.randint(1, length - 1)
            numOfLetter = length - numOfNum
            # 选中numOfNum个数字
            slcNum = [random.choice(string.digits) for i in range(numOfNum)]
            # 选中numOfLetter个字母
            slcLetter = [random.choice(string.ascii_letters) for i in range(numOfLetter)]
            # 打乱这个组合
            slcChar = slcNum + slcLetter
            random.shuffle(slcChar)
            # 生成密码
            self.genPwd = ''.join([i for i in slcChar])
            if self.cb1.GetValue() == 1:
                self.text.AppendText(self.genPwd)
                self.box.append(self.genPwd)
            else:
                self.text.AppendText(self.genPwd.lower())
                self.box.append(self.genPwd.lower())
            self.count += 1
        except ValueError:
            self.text.AppendText("输入错误,请输入大于1整数!!!")

    def previous(self, event):
        self.text.Clear()
        try:
            self.text.AppendText(self.box[self.count - 2])
        except IndexError:
            self.text.AppendText("无")

    def Clear(self, event):
        self.text.Clear()
        self.text2.Clear()
        self.count = 0
        self.box = []


    def OnCopy(self, event):
        text_obj = wx.TextDataObject()
        text_obj.SetText(self.text.GetValue())
        if wx.TheClipboard.IsOpened() or wx.TheClipboard.Open():
            wx.TheClipboard.SetData(text_obj)
            wx.TheClipboard.Close()
        dlg = wx.MessageDialog(self,
                               '已经复制到剪切板', '复制到剪切板', wx.OK | wx.ICON_INFORMATION)
        dlg.ShowModal()
        dlg.Destroy()


class MainApp(wx.App):
    def OnInit(self):
        self.frame = InfoPanel(None, -1)
        self.frame.Show(True)
        self.SetTopWindow(self.frame)
        return True


if __name__ == '__main__':
    app = MainApp(0)
    app.MainLoop()

这里写图片描述
更多内容访问omegaxyz.com
网站所有代码采用Apache 2.0授权
网站文章采用知识共享许可协议BY-NC-SA4.0授权
© 2018 • OmegaXYZ-版权所有 转载请注明出处

密码管理器是一种用于存储和管理用户密码的工具,可以帮助用户创建和记忆复杂且安全的密码Python是一种强大且易于学习的编程语言,可以用于开发密码管理器。 通过使用Python编写密码管理器,我们可以实现以下功能: 1. 创建密码数据库:使用Python的数据存储功能,我们可以创建一个密码数据库,该数据库可以存储用户的各种帐户和密码信息。可以使用关系型数据库或者使用Python的内置数据结构(如列表或字典)来实现。 2. 加密数据:为了增加安全性,我们可以使用Python的加密库将存储在密码数据库中的用户密码进行加密。这样,即使有人未经授权访问了密码数据库,也无法直接获取用户密码。 3. 自动生成密码:为了确保密码的安全性,我们可以使用Python的随机数库生成随机且复杂的密码。这样,用户就不需要记忆每个帐户的密码,而是可以使用密码管理器自动生成安全的密码。 4. 记忆密码密码管理器还可以帮助用户记忆各个帐户的密码,用户只需要记忆一个主密码,并使用该主密码来访问密码管理器。这样,用户就不需要记忆大量的密码,从而减少了密码遗忘或泄露的风险。 5. 密码备份与恢复:为了防止密码数据库的丢失或损坏,我们可以使用Python的文件操作功能,实现密码数据库的备份和恢复功能。这样,即使密码数据库发生了异常,用户的密码信息也可以被恢复。 总而言之,通过使用Python编写密码管理器,我们可以提供一个安全、方便和可靠的工具,帮助用户管理和保护他们的密码信息。密码管理器可以减少用户的记忆负担,提高密码的安全性,并降低密码泄露的风险。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值