用Python生成密码
我们经常听到数据泄露、网络威胁和系统的网络攻击;因此,数据的安全性和保密性已经成为我们生活中非常重要的一部分。现在,确保数据安全的方法之一是用密码来保护它们。
在这篇文章中,我们将讨论Python中的密码生成。
在Python中生成密码
当我们谈论安全问题时,密码经常出现在画面中。现在,由于这些密码是用来保护许多重要数据的,因此它们必须难以被黑客破解。
攻击者通常会通过随机尝试不同的字符组合并猜测出正确的密码来破解这些密码。
当我们人类手动生成密码时,它们往往很容易被破解。许多人尝试将自己的名字与数字和符号结合起来,这对黑客来说是小菜一碟。
因此,这些密码的创建应该使它们不容易被破解。我们有一些Python中的密码生成方法,这些方法很难破解,也很容易制作。
现在,让我们来详细讨论其中的一些。
使用Python中的随机模块生成密码
Python中的random
模块可以从一个列表中生成随机元素。此外,我们将使用Python的random
模块中的choice()
方法。
choice()
方法从一个列表中选择随机元素。因此,random.choice()
方法将是我们使用该方法生成密码的主要抓手。
然而,现在你一定想知道我们所说的这个列表是什么。所以,random.choice()
方法将从中选择的列表将包含所有小写和大写字母、数字和标点符号。
因此,将生成的密码将包含这些字符的随机顺序,难以破解。
现在,我们将使用Python中的string
模块来获取所有的小写、大写字母、数字和标点符号。string
模块的ascii.lowercase
方法被用来获取英语字母表中的所有小写字母,ascii.uppercase
被用来获取英语字母表中的所有大写字母。
string
为了得到数字和标点符号,我们分别使用Python中string.digits
和string.punctuation
模块的方法。
让我们看看使用Python中的random
和string
模块来生成密码的代码。
import random
import string
def passwordGen(length):
lower = string.ascii_lowercase
upper = string.ascii_uppercase
digits = string.digits
symbols = string.punctuation
comb = lower + upper + digits + symbols
result_str = ''.join(random.choice(comb) for i in range(length))
print("Password of length ", length, "is:", result_str)
passwordGen(12)
passwordGen(10)
passwordGen(5)
输出:
Password of length 12 is: ^)n34W6~0Wdx
Password of length 10 is: g&#'G-Tvn
Password of length 5 is: &g/S3
因此,正如你在上面的输出中所看到的,我们有三个不同长度的密码,这些密码是独一无二的,难以破解。
然而,我们在代码示例中导入了random
和string
模块。之后,我们做了一个函数passwordGen
,它以一个长度为参数,打印出一个特定长度的密码。
在这个函数中,我们将所有的字母、数字和符号存储在不同的变量中。现在,我们将所有这些字符合并成一个字符串,并将其存储在一个变量comb
。
现在,我们使用random.choice(comb)
,从字符串comb
的每个索引中随机选择字符,直到指定的长度,然后打印结果。
使用Python中的Secrets模块生成密码
在Python中还有一个模块用于生成用于安全目的的强加密随机数。这个模块被称为secrets
模块;然而,这个模块从 Python 3.6 及以上版本就可以使用。
这个secrets
模块提供了一个操作系统最安全的随机性来源;因此,生成的密码更加安全和有效。现在让我们讨论一下使用Python的secrets
模块生成密码的程序。
该程序与我们之前讨论的程序相似,但使用secrets
模块在保护我们的系统方面更加安全和有效。
import string
import secrets
def passwordGen(len):
combination = string.ascii_letters + string.digits + string.punctuation
password = ''.join(secrets.choice(combination) for i in range(len))
print("Password is: ", password)
passwordGen(12)
passwordGen(8)
输出:
Password is: Gz!*j3p4xd$Z
Password is: 5#;CSIa7
因此,正如你在输出中所看到的,我们做了一个方法passwordGen
,其中有一个变量combination
,它结合了所有的字母、数字和标点符号,用于使用Python中string
模块的方法创建密码。
之后,我们使用secrets.choice(combination)
方法,给它选择所有的字符,使其成为一个给定长度的密码len
,然后打印出来。因此,我们在Python中使用secrets
模块进行密码生成。
总结
在这篇文章中,我们讨论了如何在Python中生成密码。由于安全是这个时代的一个主要要求,所以生成安全的密码是非常重要的。
为此,Python 有两个模块,即random
和secrets
,它们可以帮助生成困难和不容易破解的密码。然而,这两个模块都需要从string
模块中获得帮助,以获得一个可供选择的字符组合。
然而,secrets
模块是从Python 3.6版本开始实现的,但仍被认为是一种更安全的生成密码的方式。