人类密码=好记+随机性
密码本解决的是=好记+伪随机
我同意 @
lonelygo 说的要加个人转码逻辑。设计上就是这么考虑的。但是这个转码逻辑不加在程序里,留给用户自己。不是作者偷懒,而是这样才安全。
无论程序如何加规则,出来的都是大字典。
最终使用的时候建议是用户根据自己的个性掺沙子(用户个性规则)。
最终密码 = 程序建议密码(好记+伪随机)+ 用户个性规则(用户个人方便记忆+更强的随机)
比如密码本生成全的是大写的『 MJZWWXY , XZ3ZBYR 』 这是个种子密码。
用户在这个基础上有无数中排列组合
『 MJZWWXY , XZ3ZBYR 』 ->
简单无标点: MJZWWXYXZ3ZBYR
替换标点: MJZWWXY#XZ3ZBYR
每句取首 2 个大写,其余小写: MJzwxy,XZ3zbyr
每句只取前四个字: MJZWXZ3Z
加上用户偏好的固定数字: MJZWXZ3Z1314
还有类似『飞流直下三千尺』,程序给的建议是 FLZX3QC. 用户完全可以用 flzx3000 ,或者 flzx3kc
这样的排列组合对原字典扩大很多种可能,同时,因为『沙子』不在程序里,所以更加安全。
沙子用户自己掺有 2 个好处:
1. 自己想出来的沙子好记
2. 沙子在用户脑子里:安全
如果既然要用户费脑子想沙子还要密码本有什么用?
沙子本身可以安全性很差,可能只有 1~2 位,可能用户长期都用一样的沙子。
real_password= pesdo_password (机器生成的)+simple_password (用户生成的)
沙子本身可能只是一个变幻规则,要作用到一个字符串上才能成为实体密码
real_password=userTransfer (pesdo_password )
沙子对用户本人是好记的。有较弱的安全度。
伪密码对知道明文的所有人是好记的。有一般的安全度。
伪密码+沙子=只对用户本人是好记的。有较强的安全度。
自己搜了下『唐诗密码本』,发现下文,不是我写的。想法很相似。
http://www.360doc.com/content/10/0520/16/114824_28577582.shtml