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

前言

密码是信息安全的基石,它用于保护我们的账户、数据和隐私。为了确保密码足够强大,需要生成随机密码。在本文中,将讨论多种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.hqwc.cn/news/467456.html

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

相关文章

给你介绍一款适合教培行业的手机软件,很好用,关键还是免费的

给你介绍一款适合教培行业的手机软件&#xff0c;很好用&#xff0c;关键还是免费的&#xff0c;DT浏览器不同于普通意义上的浏览器&#xff0c;DT的含义就是数据资料的意思&#xff0c;更专注于资料的收集和管理&#xff0c;是一款资料管理类的浏览器&#xff0c;也是一款面向…

【教3妹学编程-算法题】大于等于顺序前缀和的最小缺失整数

2哥 : 叮铃铃&#xff0c;3妹&#xff0c;过年干嘛呢&#xff0c;是不是逛吃逛吃&#xff0c;有没有长胖呢。 3妹&#xff1a;切&#xff0c;我妈张罗着要给我相亲呢。 2哥 : 相亲&#xff1f;哈哈哈哈 3妹&#xff1a;别笑了&#xff0c;我妈说跟我年龄相等的人都已经孩子上小…

autojs通过正则表达式获取带有数字的text内容

视频连接 视频连接 参考 参考 var ctextMatches(/\d/).findOne()console.log("当前金币"c.text()) // 获取当前金币UiSelector.textMatches(reg) reg {string} | {Regex} 要满足的正则表达式。 为当前选择器附加控件"text需要满足正则表达式reg"的条件。 …

(2024,扩散,多概念擦除,概念无关表示生成,权重解耦)扩散模型中可分离的多概念擦除

Separable Multi-Concept Erasure from Diffusion Models 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1. G-CiRs 3.2. 权重解耦&#…

模型 “焦糖布丁”理论

系列文章 主要是 分享 思维模型&#xff0c;涉及各个领域&#xff0c;重在提升认知。关注需求本质。 1 “焦糖布丁”理论的应用 1.1 “焦糖布丁”理论-海底捞的创新 海底捞以其优质的服务而闻名&#xff0c;它的成功之处在于深刻理解了消费者的需求和任务&#xff0c;并提供了…

算法沉淀——链表(leetcode真题剖析)

算法沉淀——链表 01.两数相加02.两两交换链表中的节点03.重排链表04.合并 K 个升序链表05.K个一组翻转链表 链表常用技巧 1、画图->直观形象、便于理解 2、引入虚拟"头节点" 3、要学会定义辅助节点&#xff08;比如双向链表的节点插入&#xff09; 4、快慢双指针…

Codeforces Round 923 (Div. 3) C. Choose the Different Ones(Java)

比赛链接&#xff1a;Round 923 (Div. 3) C题传送门&#xff1a;C. Choose the Different Ones! 题目&#xff1a; ** Example** ** input** 6 6 5 6 2 3 8 5 6 5 1 3 4 10 5 6 5 6 2 3 4 5 6 5 1 3 8 10 3 3 3 4 1 3 5 2 4 6 2 5 4 1 4 7 3 4 4 2 1 4 2 2 6 4 4 2 1 5 2 3 …

【Java程序设计】【C00270】基于Springboot的moba类游戏攻略分享平台(有论文)

基于Springboot的moba类游戏攻略分享平台&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的游戏攻略分享平台 本系统分为系统功能模块、管理员功能模块、以及用户后台功能模块。 系统功能模块&#xff1a;在平台首…

力扣精选算法100道——【模板】前缀和(一维)

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 目录 &#x1f6a9;了解题意 &#x1f6a9;算法原理 &#x1f388;设定下标为1开始 &#x1f388;取值的范围 &#x1f6a9;实现代码 &#x1f6a9;了解题意 第一行的3和2&#xff0c;3代表行数&#xff0c;2代表q次查询(…

每日五道java面试题之java基础篇(七)

第一题. HashMap和HashTable有什么区别&#xff1f;其底层实现是什么&#xff1f; 区别 &#xff1a; HashMap⽅法没有synchronized修饰&#xff0c;线程⾮安全&#xff0c;HashTable线程安全&#xff1b;HashMap允许key和value为null&#xff0c;⽽HashTable不允许 底层实现…

在Ubuntu22.04上部署FoooCUS2.1

Fooocus 是一款基于 Gradio的图像生成软件&#xff0c;Fooocus 是对 Stable Diffusion 和 Midjourney 设计的重新思考&#xff1a; 1、从 Stable Diffusion 学习&#xff0c;该软件是离线的、开源的和免费的。 2、从 Midjourney 中学到&#xff0c;不需要手动调整&#xff0c;…

langchain==win11搭建使用GPU

annaconda安装Python 3.11.7 下载代码&#xff1a; GitHub - chatchat-space/Langchain-Chatchat: Langchain-Chatchat&#xff08;原Langchain-ChatGLM&#xff09;基于 Langchain 与 ChatGLM 等语言模型的本地知识库问答 | Langchain-Chatchat (formerly langchain-ChatGLM)…