大家有没有想过,如果你自己想了一个密码,比如csdnnb11,然后想把它作为百度网盘、csdn、github、手机密码…等,这样子只用记住一个了?
这种想法存在两个风险,第一就是不太容易借号,比如你要把百度网盘的号借给朋友,那么朋友完全可以用你给她的密码盗登别的;第二就是每个网站密码要求不同。比如银行卡密码就要求纯数字的。
我自己就想到了一个算法,思路很简单,就是自己先想一个密码,比如还是csdnnb11,然后把它sha-256哈希成纯数字,设为 x x x,然后以 x x x为种子初始化随机数生成器,然后自己编写不同平台的密码生成策略。
示例代码:
import random
import hashlib
class gen:
def __init__(self,password:str) -> None:
sha256=hashlib.sha256(password.encode()).hexdigest()
seed = int(sha256, 16)
self.seed=seed
random.seed(seed)
def 手机密码(self):# 6位数数字密码
ret=''
for _ in range(6):
ret=ret+str(random.randint(0,6))
return ret
def Steam密码(self):
ret=''
for _ in range(12):
ret=ret+str(random.choice(self.all))
return ret
pwd=input('请输入您要生成的密码:')
Gen=gen(password=pwd)
print(Gen.手机密码())
比如,我只要记住我自己的密码是“csdnnb11”,那么我运行上面的代码,调用手机密码(),就可以得到“632416”,调用Steam密码(),就可以得到"TohybTifmc30"
这样子,我就可以在不同平台使用不同密码,但只用记住一个了!而且可以自定义密码长度什么的