文章目录

  • 易泄露密码排名
  • secrets
  • XKCD风格密码

易泄露密码排名

NordPass是著名的密码管理工具,他们每年都会公布最常用的密码,例如2022年最常用密码如下

password 123456 123456789 guest qwerty
12345678 111111 12345 col123456 123123
1234567 1234 1234567890 000000 555555
666666 123321 654321 7777777 123

这个榜单其实每年变化并不大,所以每年看到类似的帖子,都让人有一种炒冷饭的既视感,但大多数人挑选这些密码也不是毫无缘由,毕竟这些密码简单容易记。但这些密码还有另外一个共同的特点,就是容易被破解。

Python标准库中有一个模块secrets,专门用于密码级的安全随机数。

secrets

secrets用于生成高度加密的随机数,这些随机数适合做密码。

众所周知,伪随机数模块random生成的随机数并不随机,其原理无非是按照当前随机数种子,然后从随机数表中索引一个值而已。这个随机数种子是可以设置的,一般涉及到随机数生成的算法,都会实现声明随机数种子,以确保成果可复现。大多数情况下,如果不设置随机数种子,会按照系统时间来生成种子,进而生成随机数。所以,若是用random生成的随机数当密码,那被破解的几率应该是很高的。

secrets中主要有三个函数,分别用于生成随机字节字符串、十六进制文本字符串以及URL随机字符串,其使用方法如下,输入参数为字符串长度。

>>> from secrets import *
>>> token_bytes(16)
b't\x98\x00\x86\xfa:\xdeV(E\xb0\x82\x96\x80T\xb3'
>>> token_hex(16)
'1b65dcaf5f1e9bd96fa8639b966d7cde'
>>> token_urlsafe(16)
'8EgjGpnKISzTM2WgPYk4tQ'

当然,除了这三个主要函数之外,secrets也具备基本的随机数功能,即

  • choice(lst)lst中挑选出一个元素返回
  • randbelow(n) 生成小于n的自然数
  • randbits(n) 生成不超过n位bit的随机整数
>>> choice([1,2,3])
1
>>> randbelow(5)
3
>>> randbits(5)
10

XKCD风格密码

所谓XKCD,尽管带有CXK三个字,但经过严密地考证,发现和ikun没什么关系,而且也不是某些单词的缩写,这四个字母仿佛是随机选出来的。而之所以选择这四个字母,乃因这四个字母连在一起没法组成任何音节,无法发音,或许这也是密码安全的一种暗示吧。

简单来说,XKCD其实就是用单词来取代字符作为密码的最基本元素,由于单词都是有含义的,所以由单词组成的密码,相对来说是比较好记的;但另一方面,单词所蕴含的字节数是远多于字符的,换言之,用单词组成的密码,不易被破解。

如下面代码所示,通过四个单词组成了一个密码

import secrets
words = ["单词","蕴含","字节","字符","密码", "简单", "发音"]
pw = "".join(secrets.choice(words) for _ in range(4))
print(pw)
# '字节密码密码蕴含'

当然,一般来说这个词库是比较大的,从词库中挑出一组对自己来说有意义而对别人来说没啥意义的词汇,也是比较容易的。仅就上面的字节密码密码蕴含来说,至少包含32个字节,想暴力破解几乎是不可能的,想要记忆却很容易,想要推测却也十分困难。

【Python标准库】用了Secrets,再也不用担心密码泄露相关推荐

  1. python实现抢劵_用Python实现微信自动化抢红包,再也不用担心抢不到红包了

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  2. 微信抢红包python脚本不用手机_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 - 过了一会,内心 ...

  3. 推荐几款Python编程类游戏,妈妈再也不用担心我的学习了

    自学过编程的小伙伴都知道,在学习的过程中,不仅仅要记下很多的知识点,而且那些知识点,都是非常的干,很干,很干,没有一点乐趣的感觉..... 所以在很多人学习Python的人,也许他的基础知识还没有学好 ...

  4. python实现自动化抢微信红包功能_【Python】用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 - 过了一会,内心 ...

  5. python自动抢微信红包源码_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  6. 用Python实现微信自动化抢红包,再也不用担心抢不到红包了

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 - 过了一会,内心 ...

  7. python微信抢红包代码_用Python实现微信自动化抢红包,再也不用担心抢不到红包了...

    1. 概述 刚刚收到了两个消息,一个好消息,一个坏消息. 先说好消息,好消息就是微信群里有人要发红包,开心~ 不过转念一想,前几次的红包一个都没抢到,这次???不由自主的叹了一口气 ... 过了一会, ...

  8. Python标准库asyncio模块基本原理浅析

    Python标准库asyncio模块基本原理浅析 本文环境python3.7.0 asyncio模块的实现思路 当前编程语言都开始在语言层面上,开始简化对异步程序的编程过程,其中Python中也开始了 ...

  9. python标准库(二)

    格式化输出 reprlib 库用来格式化 >>> import reprlib >>> reprlib.repr(set('aabbccddeeeff')) &qu ...

  10. python标准库对象导入语句_Python标准库之Sys模块使用详解

    sys 模块提供了许多函数和变量来处理 Python 运行时环境的不同部分. 处理命令行参数 在解释器启动后, argv 列表包含了传递给脚本的所有参数, 列表的第一个元素为脚本自身的名称. 使用sy ...

最新文章

  1. SharePoint 2007/2010 的SPGridView 控件常见的两个问题
  2. Angular应用带参数的路由实现
  3. mysql自定义函数多参数_自定义mysql函数 - 无法传递参数
  4. 【书摘】一种基于Git的版本管理方案
  5. 前端md转html添加样式_前端文档站点搭建方案
  6. Spring DI(依赖注入)构造器注入篇
  7. Java9 jar兼容_java9新特性-6-多版本兼容jar包
  8. Docker学习总结(66)—— Docker 的三大基石:Namespace、Cgroup 和 rootfs
  9. 美团面经-java开发
  10. 计算机怎么调整显示英语翻译,翻译词汇:计算机显示英语词汇 口译词汇
  11. 一篇关于Dataset与泛型、自定义集合的讨论
  12. knn算法python代码识别手写数字_python使用KNN算法识别手写数字
  13. 生成对抗网络,从DCGAN到StyleGAN、pixel2pixel,人脸生成和图像翻译。
  14. conky - linux desktop 漂亮的桌面系统资源使用监控软件
  15. linux 判断硬链接文件,如何判断硬链接(hard link)文件?
  16. 社群活动——撬动用户参与意愿的7个指导原则
  17. html中的字体样式
  18. 我的世界服务器如何修改天气,我的世界怎么改变天气 我的世界改变天气指令代码大全...
  19. 我的2018——最美的年龄为最纯的梦想尽最大的努力
  20. SuperMap地图绘制线段

热门文章

  1. *TEST 1 for NOIP
  2. storm apache_Apache Storm很棒。 这就是为什么(以及如何)使用它的原因。
  3. 潜艇空气独立推进系统的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  4. 高并发系统设计——API网关技术选型
  5. Java获取时间,将当前时间减一天、一月、一年,并加以格式化
  6. linux riot密码,拳头账号密码忘了怎么办?riot账号怎么找回密码修改密码
  7. Oliver的救援--SSL 2278
  8. 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
  9. Strategy策略模式详解与实例
  10. 查看已有的docker镜像latest的具体版本号