大概两个小时写了一个基于算法的非存储密码管理工具 ...

2011-12-22 04:32:15 +08:00
 Sunyanzi
------------------------------------------------------------
http://mop.sunyanzi.cn/password/
------------------------------------------------------------

一直想在分享创造发点什么 ... 没想到这次托了 CSDN 的福了 ...

非常小非常小的小东西 ... 原理也很简单 ... 只是之前都没有想到要写它 ...

这是一个基于 MD5 和 SHA-512 的密码计算器 ...

可以将你的主密码转化为强度比较高且不可逆的密码 ...

如果要在不同的网站使用不同的密码的话 ... 填写辨别码就好 ...

辨别码和主密码哪怕有轻微的改动最后生成的密码也会天差地别 ...

这东西的核心理念是既然我们无法保证自己的密码在服务端是否是加密存储的 ...

那么不如在给服务器之前自己先加密一下 ... 用起来也放心 ...

系统是纯 JavaScript 的 ... 没有任何后端脚本 ...

不用担心明文密码在网络上传输的过程中被看到 ...

密码完全由算法每次即时演算 ... 不会存储在任何地方 ...

只要浏览器窗口一关内存一清立即烟消云散 ...

欢迎试试看 ... 我觉得大概比每次自己算 MD5 还是好用一些的 ...
8870 次点击
所在节点    分享创造
48 条回复
RoyLaw
2011-12-22 13:36:11 +08:00
好久没见鸭子了,其实Lastpass就可以了啊,生成随机密码再保存。。
napoleonu
2011-12-22 15:19:42 +08:00
我对LZ已经五体投地了,以后就是这个了,不过要是再美观点就好了 :)
linchanx
2011-12-22 15:26:46 +08:00
@sunyanzi 感谢 好东西 太棒了
frittle
2011-12-22 16:16:24 +08:00
@Sunyanzi 嗯,那不是争议点。不过还是补充一下LastPass的操作:储存在LastPass服务器上的资料都是在用户端加密和解密的,所以就算他们家数据库被盗了,也没什么好担心的。 http://goo.gl/lSN7t
Sunyanzi
2011-12-23 13:25:52 +08:00
冷静下来想了一下 ... 我这个东西的局限性还是挺大的 ...

比如许多地方的密码不能粘贴 ...

做成手机 App 的话 ... 每次看着手机输密码又太累 ...

浏览器插件的话我可以自动根据网站域名生成辨别码 ... 网站域名一变就全完了 ...

所以说还是当个玩具好了 ... 实际应用还是没办法让它操作简单又安全 ...

@napoleonu 多谢支持 ... 界面的话其实 ... 难看的一如既往 ...

http://www.google.com/#q=site:mop.sunyanzi.cn

可以参见上面链接 ... mop.sunyanzi.cn 下面的东西都长成这个样子的 ...

还有些不知道为啥没被 Google 收录的比如 dice ... 长得都一个样 ...

算是难看的统一吧 ...

@frittle 我看了 LastPass 的文档 ... 确实是我之前了解的不够 ...

可不管怎么说我还是难以信任任何存在【中央数据库】的密码计算机制 ...

我只相信公开的算法 ... 这大概是我的某种病态的偏执吧 ...

你说 ... 假如有一天 LastPass 莫名的被 GFW 了 ... 我们的密码怎么办 ..?

谁能保证这些服务是永远可用的呢 ..?
qq286735628
2011-12-23 13:39:07 +08:00
不错
如果做成浏览器插件的形式,会方便很多
公开的算法,会不会像MD5一样,虽然是不可逆算法,但是当用的人多了,就会有人开始收集字典
Matata
2011-12-23 13:58:04 +08:00
我是进来膜拜孙大大的
Sunyanzi
2011-12-23 16:43:47 +08:00
@qq286735628 这东西虽然小但是蛮健壮 ...

底层算法是基于 HMAC 的 ... 组合算法涉及一切用户填写的内容 ...

也就是说 ... 在使用同样的主密码和同样的辨识码的情况下 ...

只要密码长度不同或组成不同生成的最终密码就会截然不同 ...

想做这个综合算法的彩虹表我真心觉得很困难 ...
lentrody
2011-12-23 17:15:42 +08:00
@Sunyanzi Lastpass这边经常连接不到服务器……反正本地手动导入导出也能用就是了
yyfearth
2011-12-23 17:19:44 +08:00
只要算法够复杂准确,结果唯一,那么只要记住算法和主密码就可以达到存储密码的目的,就像Lastpass和1Password一样。
yyfearth
2011-12-23 17:22:20 +08:00
@Sunyanzi @qq286735628 对呀,就算算法公开,只要加盐不同,结果就会截然不同。破解的唯一方法,就是拿到你的完整加密方法,然后估计字典重新生成彩虹表,这样代价会很大。而且,只要你主密码足够复杂,完全可以无视爆破。
yyfearth
2011-12-23 17:23:00 +08:00
这个办法的唯一问题就是,由于没有存储,如果一个密码废掉后,没办法得到另一个密码~!
feiandxs
2011-12-23 17:42:29 +08:00
Sunyanzi
2011-12-23 22:33:44 +08:00
@yyfearth 如果主密码或者辨识码任何一个被忘掉了的话 ...

任谁也找不回你的密码 ... 这就是我要实现的效果 ...

@feiandxs 我看了一下花密 ... 和我的这个小东西出发点是一致的 ...

那个定理怎么说的来着 ...

你以为你发明了一个新东西 ... 其实这东西早在若干年前就已经被发明过了 ...

不过我这个东西的安全性倒是比花密高些 ...

花密只能生成 /[0-9][A-F]{16}/i 这样的密码 ... 算是前辈性的作品吧 ...
Fann
2011-12-23 23:06:28 +08:00
@Sunyanzi 非常感谢 lz 分享,保存了一个本地版本(本地更快的加载速度 :D)准备试用一段时间,目前想到的成本就是每次多费事一小下。

生成器里有一个 算法版本,可能 lz 会有改进修改,是不是放到 Github 这种方便跟踪更新?
yyfearth
2011-12-24 08:43:54 +08:00
@Sunyanzi 我的意思是,如果你用固定的算法,那么同一个网站只可能有一个密码,如果这个密码必须换掉,那么你没办法用同样的方法获得一个新的密码、
reducm
2011-12-24 11:49:29 +08:00
@yyfearth ls,换密码换主密码就行啊
Sunyanzi
2011-12-24 15:25:02 +08:00
@Fann 算法版本的意思是将来哪怕我又冒出什么想法更改了新算法 ...

原来的算法也不会消失掉 ... 始终会保持在可用状态 ...

目前这个密码生成的算法是我能想到的安全级最高的办法 ...

如果更改的话也是降低安全级往更人性的方面修改 ...

比如密码长度不影响生成的内容 ... 只是用于截取 ...

比如替换掉密码中 0 O / 1 l I 这样不易看清的字符 ...

比如生成符合用户规则的密码如【包含四个大写字母四个小写字母四个数字两个符号】等等 ...

每一个算法我测试通过之后会直接以一个新版本的形式放上去 ...

应该不用 Github tracking 吧 ...

@reducm 一般来说不推荐更换主密码 ... 主密码如果有好多种不方便记忆 ...

对于 @yyfearth 的情况也许可以用在辨识码后面加尾缀的方法来改变 ...

如原来的辨识码是 site ... 因为某个原因不得不改密码的话 ...

其他都不动 ... 把 site 改成 site1 就会有新密码生成 ...
leungxh
2011-12-24 16:34:49 +08:00
最好不要《生成密码的属性》,因为不可能把每个网站的属性都记住啊。
像花蜜那样不要选择就好,可惜这东西在手机上不太方便用。
Fann
2011-12-24 17:26:37 +08:00
@Sunyanzi 不同算法会不会出现同一套主密码+识别码生成两个完全不同的密码?如果再需要记对应算法版本的话成本就更高了吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/24012

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX