一个简单的密码生成算法

小时候写的垃圾,长大后又生产了一篇高级垃圾😅

这是个啥?

答: 是小时候写的垃圾,现已被这篇文章取代 2021.9.22

现如今,每个人都有不少网站的帐号,为每一个帐号设置不同的密码会增加大脑的记忆负担,而使用相同的密码则会引发安全问题。

Simple password generator,是一个简单的密码生成器,但这绝不表示生成的密码是简单密码(弱口令)。通过本生成器可使用户仅需记住一个密码(即所有密码的公匙),来通过算法动态生成实际密码,每次密码皆为动态生成,由公匙确保生成密码的一致性,密码数据不做任何保持,具有较高的安全性。

如何使用

直接上图:

启动后输入储存在大脑 中的密码,然后根据不同网站输入不同的key,生成器会实时计算出唯一的值来作为实际密码,密码不做任何保存处理。

输入 exit 退出程序。

原理

其实就是随机数种子的应用= =|||

还有个缺点,前三(四)位固定是大小写字母、数字(符号)搭配…

源码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import random
lower="abcdefghijklmnopqrstuvwxyz"
upper="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
symbols="!%@#^,./?*;:_"
number="0123456789"

def getstr(legth,str1):            
    tmp=""    
    for i in range(legth):
        tmp = tmp + random.choice(str1)
    return tmp

def getpwd(pwd,key,legth,havesymbol):
    passworld=""

    random.seed(pwd+key)
    
    if(havesymbol):
        passworld = getstr(1,upper)+getstr(1,lower)+getstr(1,number)+getstr(1,symbols)
        for i in range(legth-4):
            switch=random.randint(0,3)
            if(switch==0):
                passworld += getstr(1,upper)
            elif(switch==1):
                passworld += getstr(1,lower)
            elif(switch==2):
            	passworld += getstr(1,number)
            else:
                passworld += getstr(1,symbols)
    else:
        passworld = getstr(1,upper)+getstr(1,lower)+getstr(1,number)
        for i in range(legth-3):
            switch=random.randint(0,2)
            if(switch==0):
                passworld += getstr(1,upper)
            elif(switch==1):
                passworld += getstr(1,lower)
            else:
            	passworld += getstr(1,number)
    return passworld


pwd=input("请输入公匙:")
while(True):
    key=input("请输入关键字(或输入 exit 退出):")
    if(key!="exit"):
    	print("密码为: "+ getpwd(pwd,key,12,True))
    else:
    	break
FrostMiKu
Built with Hugo
主题 StackJimmy 设计