加密思路:
1.先通过passwd_pre()函数对密码的每一位进行转换生成一个加密前缀。
2.再通过change_txt()函数密码进行多次不同的字符转换,取出每次转换后的前四位添加到加密后的密码中。
使用函数:
passwd_pre(pwd)加密前缀生成函数。
change_txt(pwd,str1,str2)迭代加密函数str1为用来检索pwd中需要改变的字符,str2中存放转换后的字符,更具str1和str2可以改变加密的方式。
change_passwd(pwd)函数中调用了passwd_pre(pwd)函数来生成加密前缀,以及通过change_txt(pwd,str1,str2)函数进行四次迭代生成加密后缀,并进行前缀后缀的拼接。
实现代码:
#encode:UTF-8
def passwd_pre(pwd):
vret = []
for char in pwd:
if char in "abc":
char = "!"
elif char in "efg":
char = "@"
elif char in "hij":
char = "#"
elif char in "klm":
char = "$"
elif char in "nop":
char = "%"
elif char in "qrs":
char = "^"
elif char in "txy":
char = "&"
elif char in "z":
char = "*"
elif char.isupper():
char = chr(ord(char.lower() + 1))
vret.append(char)
return "".join(vret)
def change_txt(pwd, str1, str2):
vret = ""
for char in pwd:
j = str1.find(char)
if j == -1:
vret = vret + char
else:
vret=vret+str2[j]
return vret
def change_passwd(pwd):
if pwd ==None:
return '-1'
vret=""
#生成一个密码前缀
vpre=passwd_pre(pwd)
vret = vret+vpre
vlen=len(pwd)
#进行一次加密
vstr=change_txt(pwd,"1234567890abcdefghigklmnopqrstuvwxyz","a12gn5uo8pd9ef4r6v7ws3bklmxyzcgh0iqt")
if vlen<=4:
vret=vret+vstr[0:vlen]
else :
vret=vret+vstr[0:4]
#进行一次加密
vstr=change_txt(pwd,"1234567890abcdefghigklmnopqrstuvwxyz","u2gl8zmxr6vb47wgka1y9efs30hocpdn5iqt")
if vlen<=4:
vret=vret+vstr[0:vlen]
else :
vret=vret+vstr[0:4]
#进行一次加密
vstr=change_txt(pwd,"1234567890abcdefghigklmnopqrstuvwxyz","efs3uakr6vbdn5i4qt7hocp1y90xl2g8zmwg")
if vlen<=4:
vret=vret+vstr[0:vlen]
else :
vret=vret+vstr[0:4]
return vret
if __name__=="__main__":
while True :
pwd=input("请输入密码:")
if(pwd=='q'):
print("退出程序...")
break
else:
pwdnew=change_passwd(pwd)
print("密码是:"+pwd+"\n"+"加密后的密码是:"+pwdnew)
实现效果: