Python中多种生成随机密码超实用实例

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站零基础入门的AI学习网站~。

前言

密码是信息安全的基石,它用于保护我们的账户、数据和隐私。为了确保密码足够强大,需要生成随机密码。在本文中,将讨论多种Python方法,用于生成随机密码的实用示例和技巧。


目录

​编辑

前言

密码生成的要求

使用secrets模块生成密码

 示例输出:

使用random模块生成密码

 示例输出:

使用第三方库生成密码

 示例输出:

示例:生成多种类型的随机密码

 1. 生成只包含字母的密码

 示例输出:

 2. 生成只包含数字的密码

 示例输出:

 3. 生成只包含特殊字符的密码

 示例输出:

自定义密码生成函数

 示例输出:

总结


密码生成的要求

在生成随机密码之前,需要考虑密码的要求。

一个强密码通常需要包含以下元素:

  • 至少8个字符长。

  • 包含大写字母、小写字母、数字和特殊字符(如!@#$%等)。

  • 避免使用常见的单词、短语、重复字符或顺序字符。

  • 不包含个人信息,如生日、姓名或电话号码。

使用secrets模块生成密码

Python的secrets模块是一个生成安全随机数的工具。可以使用它来生成随机密码。

import secrets
import stringdef generate_password(length=12):alphabet = string.ascii_letters + string.digits + string.punctuationpassword = ''.join(secrets.choice(alphabet) for _ in range(length))return password# 生成12字符的随机密码
password = generate_password()
print(password)

上述代码首先导入 secrets 、 string 模块,然后定义了一个 generate_password 函数,该函数接受一个长度参数,并在指定的字符集合中生成随机密码。

 示例输出:

F8w$Y)qLp#5@

使用 secrets 模块生成的密码具有高度的随机性和安全性,适合用于重要账户。

使用random模块生成密码

除了 secrets 模块,还可以使用Python的内置 random 模块来生成密码。但要注意, random 模块生成的密码不如 secrets 模块安全。

import random
import stringdef generate_password(length=12):alphabet = string.ascii_letters + string.digits + string.punctuationpassword = ''.join(random.choice(alphabet) for _ in range(length))return password# 生成12字符的随机密码
password = generate_password()
print(password)

上述代码与前面的示例类似,但使用了 random 模块来生成密码。

 示例输出:

Zu9H|v%fS#bR

虽然 random 模块生成的密码可以用于一般用途,但不建议用于重要账户。

使用第三方库生成密码

除了Python内置的模块,还可以使用第三方库来生成密码。一个常用的库是 passlib,它提供了更多密码生成选项和密码安全性配置。

首先,需要安装 passlib 库:

pip install passlib

然后可以使用它来生成密码:

from passlib import pwddef generate_password():return pwd.genword(length=12, charset='ascii_62')# 生成12字符的随机密码
password = generate_password()
print(password)

passlib库提供了更多的密码生成选项,例如,可以指定密码长度、字符集合等。

 示例输出:

L8X8fz7wrTht

示例:生成多种类型的随机密码

除了生成随机密码,有时候需要生成不同类型的密码,比如只包含字母、只包含数字、只包含特殊字符等。下面是一些示例代码,演示如何生成不同类型的随机密码。

 1. 生成只包含字母的密码

import secrets
import stringdef generate_alpha_password(length=12):alphabet = string.ascii_letterspassword = ''.join(secrets.choice(alphabet) for _ in range(length))return password# 生成12字符的只包含字母的随机密码
alpha_password = generate_alpha_password()
print(alpha_password)

 示例输出:

cXWYzPrAxVqR

 2. 生成只包含数字的密码

import secrets
import stringdef generate_numeric_password(length=12):digits = string.digitspassword = ''.join(secrets.choice(digits) for _ in range(length))return password# 生成12字符的只包含数字的随机密码
numeric_password = generate_numeric_password()
print(numeric_password)

 示例输出:

738214965023

 3. 生成只包含特殊字符的密码

import secrets
import stringdef generate_special_password(length=12):special_chars = string.punctuationpassword = ''.join(secrets.choice(special_chars) for _ in range(length))return password# 生成12字符的只包含特殊字符的随机密码
special_password = generate_special_password()
print(special_password)

 示例输出:

%&$!#*@~?^><

通过这些示例代码,可以根据需要生成不同类型的随机密码。

自定义密码生成函数

如果有特定的密码生成要求,可以自定义一个密码生成函数,以满足你的需求。

以下是一个示例,生成包含大写字母、小写字母和数字的密码:

import secrets
import stringdef generate_custom_password(length=12):alphabet = string.ascii_letters + string.digitspassword = ''.join(secrets.choice(alphabet) for _ in range(length))return password# 生成12字符的自定义随机密码
custom_password = generate_custom_password()
print(custom_password)

 示例输出:

vE3XgYw6Ks2R

通过自定义密码生成函数,可以根据自己的需求生成符合特定要求的密码。

总结

本文介绍了多种方法来生成随机密码,包括使用Python的 secrets 模块、 random 模块,以及第三方库 passlib 。同时,还演示了如何生成不同类型的密码,如只包含字母、只包含数字、只包含特殊字符等。生成强密码对于保护账户和数据的安全至关重要。希望本文中的示例代码和技巧对大家有所帮助,能够生成安全的密码,提高信息安全水平。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/683896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

我的大数据之路 - 基于HANA构建实时方案的历程

产品内部前期有一个共识&#xff0c;依据业务要求的时效性来选择技术平台&#xff0c;即&#xff1a; 实时类业务&#xff0c;时效性小于2小时&#xff0c;则使用HANA构建。离线类业务&#xff0c;时效性大于2小时&#xff0c;则使用大数据平台构建。 经过五月、六月两月的努…

今日JAVA小练习之复制数组

题目描述 将两个有序数组按照大小顺序复制成一个数组 实现思路 创建新的数组&#xff0c;长度为要复制的两个数组长度之和定义3个初始变量i,p1,p2在循环中依次比较两个数组中元素大小&#xff0c;小的放入新数组若p1小于ns1的长度&#xff0c;则说明在上面while循环中ns1的元…

Redis 的 SETNX

Redis 的 SETNX 命令是一个用于设置键的值的原子性操作。SETNX 表示 "SET if Not eXists"&#xff0c;即当键不存在时才进行设置。该命令可以实现一种简单的分布式锁和限流策略。 SETNX 命令的语法如下&#xff1a; 复制代码 SETNX key value key&#xff1a;要设…

clang前端

Clang可以处理C、C和Objective-C源代码 Clang简介 Clang可能指三种不同的实体&#xff1a; 前端&#xff08;在Clang库中实现&#xff09;编译驱动程序&#xff08;在clang命令和Clang驱动程序库中实现&#xff09;实际的编译器&#xff08;在clang-ccl命令中实现&#xff0…

kafka如何保证消息不丢?

概述 我们知道Kafka架构如下&#xff0c;主要由 Producer、Broker、Consumer 三部分组成。一条消息从生产到消费完成这个过程&#xff0c;可以划分三个阶段&#xff0c;生产阶段、存储阶段、消费阶段。 产阶段: 在这个阶段&#xff0c;从消息在 Producer 创建出来&#xff0c;…

c++阶梯之类与对象(下)

前文&#xff1a; c阶梯之类与对象&#xff08;上&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;-CSDN博客 c阶梯之类与对象&#xff08;中&#xff09;&#xff1c; 续集 &#xff1e;-CSDN博客 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时&a…

Windows注册表的参数,比如: %* %0 %1 %2 %D %L %V %W

Windows注册表的参数,比如: %* %0 %1 %2 %D %L %V %W 参数意义%*代表所有的参数%0, %1第1个&#xff08;文件&#xff09;参数的完整路径&#xff0c;不包含引号。当应用程序是16位时&#xff0c;得到8.3短路径形式&#xff1b;当应用程序是32/64位时&#xff0c;得到长路径。…

【机器学习笔记】3 逻辑回归

分类问题 分类问题监督学习最主要的类型&#xff0c;主要特征是标签离散&#xff0c;逻辑回归是解决分类问题的常见算法&#xff0c;输入变量可以是离散的也可以是连续的 二分类 先从用蓝色圆形数据定义为类型1&#xff0c;其余数据为类型2&#xff1b;只需要分类1次&#x…

寒假 14

1.请编程实现二维数组的杨慧三角 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <unistd.h> int main(int argc, const char *argv[]) {int n;printf("please enter n:");scanf("%d&q…

Java并发基础:SynchronousQueue全面解析!

内容概要 SynchronousQueue的优点在于其直接性和高效性&#xff0c;它实现了线程间的即时数据交换&#xff0c;无需中间缓存&#xff0c;确保了数据传输的实时性和准确性&#xff0c;同时&#xff0c;其灵活的阻塞机制使得线程同步变得简单而直观&#xff0c;适用于需要精确协…

相机图像质量研究(13)常见问题总结:光学结构对成像的影响--鬼影

系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结&#xff1a;光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结&#xff1a;光学结构对成…

二级 C 语言笔试-15

一、选择题 1. 程序流程图中带有箭头的线段表示的是( )。 A) 图元关系 B) 数据流 C) 控制流 D) 调用关系 2. 下列描述中正确的是( )。 A) 程序就是软件 B) 软件开发不受计算机系统的限制 C) 软件既是逻辑实体&#xff0c;又是物理实体 D) 软件是程序、数据与相关文档的集合 3. …

人类智能与人工智能之间有泰勒公式的味道

人工智能&#xff08;AI&#xff09;与人类智能之间的关系&#xff0c;简单类比为泰勒公式可能并不准确&#xff0c;但在某种程度上或许有些味道。 泰勒公式是一种数学工具&#xff0c;用于将一个函数在某个点附近展开成无穷级数的形式&#xff0c;以近似描述函数的行为。它通过…

TiDB 在医疗保障信息平台的应用实践

文章介绍了 TiDB 在医疗保障信息平台中的应用。东软医保云应用管理平台通过与 TiDB 联合&#xff0c;成功满足了医疗保障业务中高并发、实时性和复杂查询的要求。在某地市医疗保障信息平台的实践中&#xff0c;TiDB 分布式数据库有效实现了在线交易和实时分析服务&#xff0c;日…

C语言学习day14:数组定义和使用

定义变量&#xff1a; 数据类型 变量 值 数组定义&#xff1a; 数据类型 数组名[元素个数]{值1,值2,值3} 代码&#xff1a; int main() {//定义变量//数据类型 变量 值//数组定义//数据类型 数组名[元素个数]{值1,值2,值3}//数组下标 数组名[小标]//数组下标是…

sql深度优化

sql优化是一个大家都比较关注的热门话题&#xff0c;无论在面试&#xff0c;还是工作中&#xff0c;都很有可能会遇到。 如果某天负责的某个线上接口&#xff0c;出现了性能问题&#xff0c;需要做优化。那么你首先想到的很有可能是优化sql语句&#xff0c;因为它的改造成本相对…

.NET Core WebAPI中封装Swagger配置

一、创建相关文件 创建一个Utility/SwaggerExt文件夹&#xff0c;添加一个类 二、在Program中找到Swagger相关配置信息 三、添加方法&#xff0c;在Program中调用 在SwaggerExt类中添加方法&#xff0c;将相关配置添写入 /// <summary> /// swagger配置 /// </sum…

初识Qt | 从安装到编写Hello World程序

文章目录 1.前端开发简单分类2.Qt的简单介绍3.Qt的安装和环境配置4.创建简单的Qt项目 1.前端开发简单分类 前端开发&#xff0c;这里是一个广义的概念&#xff0c;不单指网页开发&#xff0c;它的常见分类 网页开发&#xff1a;前端开发的主要领域&#xff0c;使用HTML、CSS …

C++函数对象-运算符函数对象 - 位运算 - 实现 x ^ y 的函数对象 (std::bit_xor)

任何定义了函数调用操作符的对象都是函数对象。C 支持创建、操作新的函数对象&#xff0c;同时也提供了许多内置的函数对象。 运算符函数对象 C 针对常用的算术和逻辑运算定义了很多函数对象&#xff1a; 位运算 实现 x ^ y 的函数对象 std::bit_xor template< class T &…

[经验] 欧阳修唐宋八大家之首是谁 #微信#知识分享#学习方法

欧阳修唐宋八大家之首是谁 1、唐宋八大家之首是谁 唐宋八大家是中国文学史上最具代表性的八位大文豪&#xff0c;他们的文学成就在中国文学史上占有重要地位&#xff0c;被誉为文学史上的“巨人”。 唐宋八大家之首&#xff0c;无疑是唐代著名诗人杜甫。他出生在一个贫苦的家…