Python中利用Random包生成随机密码以及将密码存入文档

1首先为大家介绍一下Random包

random是内建(built-in)函数,作用是产生随机数,使用较多.

首先是导入模块

import randoom

接着就可以调用random模块下的函数了。

使用下面命令语句可以查看random包所包含的内容:

dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', 'WichmannHill', '_BuiltinMethodType', '_MethodType', '__all__', '__builtins__', '__doc__', '__file__', '__name__', '__package__', '_acos', '_ceil', '_cos', '_e', '_exp', '_hashlib', '_hexlify', '_inst', '_log', '_pi', '_random', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'division', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'jumpahead', 'lognormvariate', 'normalvariate', 'paretovariate', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']

-random.randint(start,end)  

简单的使用方法如下

random.randint(1, 100)  # 54

-random.choice(seq)

从序列中随机选取一个元素等等。

random.choice([1, 2, 3, 5, 8, 13]) #list 5
 
random.choice('hello') #字符串  h
 
random.choice(['hello', 'world']) #字符串组成的list  'world'
 
random.choice((1, 2, 3) #元组 3

 

2.程序

1.首先我们导入所需要的包

import tkinter as tk
import random

2.创建一个窗口并对其名称大小进行设置

win=tk.Tk()
win.title('随机密码生成')#添加窗口标题
win.geometry('300x250')#设置窗口大小

 

3.在窗口内创建标题以及对应的输入框

t0=tk.Label(win,text='随机密码生成\n------------------')
t0.grid(row=0,column=1)
t1=tk.Label(win,text='所设密码的项目名称\t:')#创建设置密码的项目标签
t1.grid(row=1,column=0)
e1=tk.Entry(win)#创建项目名称输入框
e1.grid(row=1,column=1)
t2=tk.Label(win,text='生成的密码位数\t:')#创建获取密码位数标签
t2.grid(row=2,column=0)
e2=tk.Entry(win)#创建密码位数输入框
e2.grid(row=2,column=1)

4.在窗口内创建随机密码输出标签及输出框

t3=tk.Label(win,text='随机生成的密码为\t:')#设置随机密码输出标签
t3.grid(row=3,column=0)
var=tk.StringVar()#对字符串类型进行包装
tk.Label(win,width=20,height=1,bg='white',textvariable=var).place(x=130,y=88)#创建随机密码文本输出框并设置其大小

 

 

5.创建密码选取字符串

a='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAMNBVCXZ'

6.创建密码生成函数

def sc():
    global var
    p=random.sample(a,int(e2.get()))
    q=''.join(p)
    var.set(q)

7.通过按钮调用函数

butt=tk.Button(win,text='Add',command=sc)#创建按钮并通过command调用函数
butt.grid(row=4,column=0)#调节按钮位置

8.创建密码保存函数,并用按钮调用

def save():
    df=e1.get()
    f = open('密码本.txt', 'a+')
    f.write(str(e1.get())+'密码为:'+str(var.get())+'\n')
    f.close()
butt1=tk.Button(win,text='Save',command=save)
butt1.grid(row=4,column=1)
butt=tk.Button(win,text='Add',command=sc)
butt.grid(row=4,column=0)
win.mainloop()

运行完成后会在文件夹中生成一个密码本.txt 文档在其内部保存所生成的密码及其项目名称

     

 

 

 

全部代码:

import tkinter as tk
import random
win=tk.Tk()
win.title('随机密码生成')
win.geometry('300x250')
t0=tk.Label(win,text='随机密码生成\n------------------')
t0.grid(row=0,column=1)
t1=tk.Label(win,text='所设密码的项目名称\t:')
t1.grid(row=1,column=0)
e1=tk.Entry(win)
e1.grid(row=1,column=1)
t2=tk.Label(win,text='生成的密码位数\t:')
t2.grid(row=2,column=0)
e2=tk.Entry(win)
e2.grid(row=2,column=1)
t3=tk.Label(win,text='随机生成的密码为\t:')
t3.grid(row=3,column=0)
var=tk.StringVar()
tk.Label(win,width=20,height=1,bg='white',textvariable=var).place(x=130,y=88)
a='1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPLKJHGFDSAMNBVCXZ'
def sc():
    global var
    p=random.sample(a,int(e2.get()))
    q=''.join(p)
    var.set(q)
def save():
    df=e1.get()
    f = open('密码本.txt', 'a+')
    f.write(str(e1.get())+'密码为:'+str(var.get())+'\n')
    f.close()
butt=tk.Button(win,text='Add',command=sc)
butt.grid(row=4,column=0)
butt1=tk.Button(win,text='Save',command=save)
butt1.grid(row=4,column=1)
win.mainloop()

### 关于Python生成或处理机器码的概念与方法 #### 什么是机器码? 机器码是指能够唯一标识一台计算机的信息集合。它通常由硬件属性(如CPU序列号、硬盘ID、网卡MAC地址等)组成,用于软件授权验证或其他安全机制。在Python中,可以通过调用操作系统接口或第三方库来获取这些信息并生成唯一的机器码。 --- #### 如何通过Python生成机器码? 1. **使用WMI库获取硬件信息** WMI(Windows Management Instrumentation)是一个管理工具,允许访问底层硬件信息。在Windows环境中,可以借助`wmi`库提取诸如处理器ID、主板序列号、磁盘驱动器ID等数据[^3]。 下面是一段示例代码展示如何读取硬件信息: ```python import wmi c = wmi.WMI() cpu_info = c.Win32_Processor()[0].ProcessorId.strip() # 获取CPU ID disk_info = c.Win32_DiskDrive()[0].SerialNumber.strip() # 获取硬盘序列号 mac_address = c.Win32_NetworkAdapterConfiguration(IPEnabled=True)[0].MacAddress # 获取MAC地址 machine_code = f"{cpu_info}-{disk_info}-{mac_address}" # 组合成机器码 print(machine_code) ``` 2. **跨平台解决方案——uuid模块** 如果希望程序能够在不同平台上运行而无需依赖特定的API,则可考虑使用标准库中的`uuid`模块结合主机名和其他系统参数构建伪唯一标识符[^4]。 示例代码如下: ```python import uuid import socket hostname = socket.gethostname() # 主机名称 node_id = uuid.getnode() # MAC 地址对应的整数形式 unique_identifier = str(uuid.uuid5(uuid.NAMESPACE_DNS, hostname + str(node_id))) # 基于DNS命名空间生成UUID print(unique_identifier) ``` 3. **随机化增强安全性** 当单纯依靠物理设备特征不足以满足需求时,还可以引入随机因素增加复杂度。例如,在基础机器码上附加一段不可预测的数据片段作为补充。 随机字符串生成函数可能像这样定义: ```python import random import string def generate_random_string(length=8): characters = string.ascii_letters + string.digits return ''.join(random.choice(characters) for _ in range(length)) enhanced_machine_code = f"{machine_code}-{generate_random_string(16)}" print(enhanced_machine_code) ``` --- #### 处理已有的机器码 一旦生成了机器码,就需要对其进行存储和校验操作: - **保存到数据库** 可以采用关系型数据库表结构设计字段专门记录每台客户端提交过来的编码值;或者存入NoSQL文档里以便快速检索匹配项[^2]。 - **比较逻辑实现** 登录阶段重新计算本地实际状况下的新版本号码并与远端服务器预先登记过的那份原始样本作逐位对照确认两者一致才放行进入下一步流程。 --- ### 注意事项 尽管上述技术手段有效但也存在局限之处比如某些新型虚拟化环境下无法正常取得真实有效的底层资源详情因此开发者应当充分测试目标场景兼容情况再决定最终方案选型[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值