[ ]
https://ZhouSa.com 1. 随机密码[3.6]
我们肯定碰到过这种情况--我们登上了一个网站(某个app)但是我们忘记了密码,然后我们就自然的用其他各个网站(app)最常用密码(通常是名字缩写和生日的组合)来碰,往往这还挺奏效.
实际上不法分子也往往利用社会工程学获取到一些用户本人的信息,然后用这种方式破解.
也有一些网站会有意无意的暴露用户的信息,如果有网站暴露了客户的密码而你的密码也被暴露了,那不法分子就可以用这些暴露了的账号密码来尝试各种网站从而窃取你的财产.
有没有什么办法可以防止这种情况呢?
这个问题归根到底是要解决如何辨识"你就是你"这个问题,在密码学中认为有三类要素可以确认"你就是你":
你知道的要素,比如密码、暗号等等.这件事只有你知道别人不知道
你拥有的要素,一把钥匙、一块手表、一件信物等等.这件东西只有你有别人没有.
你的生理要素如指纹、面部特征、DNA等等.这些生理特征每个人都不一样
本文则是讲的第一种方式--密码,但带入一个限制条件--不能使用基于个人信息组合构建密码.其实思路标题已经说了,就是使用随机字符串
自python3.6起标准库中新增了一个模块secrets它可以实现这一功能.
secrets实际上是random库的扩展,提供了更加便捷的接口
import secrets
1.1. 在一个序列中随机挑选一个元素
secrets.choice(["a","b","z"])
'a'
1.2. 在0到n的范围内随机抽取一个整数
secrets.randbelow(10)
7
1.3. 给出一个bit长度,生成一个其范围内的整数
secrets.randbits(8)<2**8
True
1.4. 随机生成指定长度的一串字节串
secrets.token_bytes(nbytes=6)
b'j\xe6\x8c\xa4t\x8e'
1.5. 随机生成指定长度的一串16进制字符串
secrets.token_hex(nbytes=6)
secrets.choice(["a","b","z"])
0
1.6. 随机成成指定长度的一串url安全的字符串
secrets.choice(["a","b","z"])
1
secrets.choice(["a","b","z"])
2
还没有评论,来说两句吧...