针对密码泄漏事件,都有哪些相对安全的密码加密规则?


对于 CSDN 明文存储密码并测漏一事,我实在无力吐槽。

传统的直接 md5(password) 弱爆了,密码字典一下子就查出来了。所以,希望大家能给我提供一些值得在今后开发中使用的密码加密规则。

我常用的方法是用户提交时,先用 JavaScript MD5 将密码在本地加密,提交到服务端,服务端取用户表中某个字段(比如注册时间)再加密一次 md5(datetime+md5(password)) ,存储二次加密后的密码,自认为这样相对安全,但还是觉得有些许不妥,希望能指出。

加密 md5

Left0 11 years, 5 months ago

其实关于安全问题的讨论或者防御方法很多手册都写得非常好,真不知道现在的程序员有没有好好看过这些文字。

比如说php,已在md5的手册上给出了以下连接: http://cn2.php.net/manual/en/faq.pass...

我大概翻译一下要点:
1. md5, sha1, sha256都不适合用来做密码的加密,以上函数都是为了快速有效的验证而设计(我想是指验证文件等运用),所以使用现代的计算机技术,是完全有可能实现暴力破解的

2. 加密password最好是使用更复杂算法的方法比如crypt,并且使用“加盐值(salt)”,楼主所说的方法就是一种加盐法,也就是将原密码通过一些有规律的变化再加密。

3. 第三点解释什么是salt,上面已经解释了,使用了salt以后就算暴力破解了也不见得能立马能看出原密码来,必须知道变化的规律才行

后来我有注意到楼主在客户端用md5加过一次密,我的第一感觉是没什么用,因为客户端的js代码谁都看得见,知道加密的规则,所以这么做如果是防截取的话,感觉用处不是特别大,而且我直接使用截取到的加密后的密码直接传输到服务器端,服务器也看不出什么差别来。

对于传输层来说,还是老老实实用https靠谱点儿

污黄的蓝白条纹 answered 11 years, 5 months ago

Your Answer