自己写了个比较蛋痛的没啥用处的小玩意,用于给不同的网站生成不同的密码,但是不是随机的(随机的密码不方便记忆)。
下面的是计算步骤:
1、对 "\0" + <用户> + "\0" + <域名> + "\0" + <种子> 进行 SHA1 的哈希计算。
2、计算可选字符的总数,假定可选字符总数为N。
3、使用SHA1的结果当作为一个大整数来对可选字符总数N进行求余运算(也就是将SHA1的结果转换成N进制)。
4、再使用可选字符表示这个N进制的数。
5、根据密码位数的要求丢弃高位。
注意: 密码所用的整数是使用小端字节序表示,而SHA1是大端字节序, "\0"是ascii的0,而不是字符'0'。
程序的界面:
建议:
1、网上使用的密码分成两个级别: 普通 和 保密,也就是网上只使用两个密码种子(方便记忆)。
2、对于普通的密码,建议使用一个简单,容易记忆的种子(一个单词或者一组数字)。
3、用普通密码的网站,可选字符为『大写,小写,数字』,筛选条件为『数字,字母』,密码长度为8位。
4、对于保密的密码,建议使用一个复杂一些的种子(至少要包含英文,并且在12位以上)。
5、用保密密码的网站,可选字符为『大写,小写,数字』,筛选条件为『数字,字母』,密码长度为12位。
6、对于使用需要定期更新的密码的场合,可以使用这样的种子格式: <基本种子 + 数字>。
比如使用今年使用 ,明年使用 ,方便记忆。
优点:
1、相对来说,这么做比 所有网站使用同一个密码安全。
2、对于不同网站使用不同的密码的好处是,方便记忆,所以不容易忘记密码。
3、保密效果还是比较可靠的,通过密码想反算出的种子,要处理的问题是,
1)求余过程中丢失的数据。
2)因为SHA1计算过程而丢失的数据。
所以相对比较困难。
阅读(1182) | 评论(0) | 转发(0) |