续昨天说到密码问题,那么该怎么解决呢。最好的方法是不要使用中文网站,虽然外国的月亮不一定圆,但是大陆的一定不圆。当然最好的方法一般做不到,推而求其次的方法当然是一站一密,恩,不同的网站用不同的密码,这样即使该网站被黑并使用明文保存密码,那么用户的损失也不会扩散到其他网站。恩,其实一个不错的工具是lastpass,能够随机生成密码,并储存在网络上的“云端”,使用一个主密码访问你的密码库。虽然将自己的密码放在云端不是很安全,但是比起个人去保护可能还要好一些吧。类似的还有将密码库储存在本地的软件,比如1password,keepass等,注意,对于类似的密码保存服务,一定不要使用国内的提供商和国内的闭源软件,为什么就不说了。
如果不放心将密码放在网上,那么看看这种方法合不合适。我写了一个软件,通过sha256和md5算法将网站字符串和自定义字符串经过各种算法hash,然后生成一个字符串,由于使用了md5等算法,所以生成的字符串是不可逆的,而不同的网站字符串又可以实现一站一密。上图说明。
输入网站的名字,带不带www什么的自己记好了,输入自定义字符串,可以不同,当然为了记忆,可以一样,反正生成的密码都不一样。选择生存的位数。然后generate生成密码,复制密码,就可以了。
这个方法的优势就是可以做到一站一密,同时不用分别记忆,也不用存在网络上,也没有存在本地的文件,随用随生成。下次登陆时,输入网站和自己的自定义字符串,生成粘贴就可以了。
算法很简单,使用python,import hashlib, 将网站字符串sha256一下,然后加上自定义字符串在sha256一下,然后在md5一下,就可以了。如果有个手机版什么的就更好了,不过还不会写。
shaString = hashlib.new('sha256', stringWebsite).hexdigest()
shaString = hashlib.new('sha256', shaString+stringCustom).hexdigest()
md5String = hashlib.new('md5', shaString).hexdigest()
生成的是32位字符串,然后根据需要截取就可以了。
我使用pyside和pyqt做了个界面,恩,完工。
windows版的下载在这里,python源码在这里:pyside版,pyqt版
win版解压直接运行即可,pyside的py2exe不小啊,这个小破软件。