日期:2014-05-19  浏览次数:20841 次

登陆验证密码的两种方式,探讨下哪种好
现有两种方式:
1,用户登录前,获取用户输入的密码,用DWR传给JAVA后台去加密,加密规则自定义,比如先加密,加六位随机数再加密,随机数session保存。然后提交到服务器,服务器中用输入用户名获取加密密码,密码加session中的随机数再加密,去比对判断是否输入密码错误

2,注册用户时,数据库有一个字段存储的注册时生成的六位随机数,用户设置密码加随机数生成MD5密码串,存入密码字段
登陆时提交的明文密码在后台 加上数据库存的该用户六位随机数加密 再与数据库中密码比对判断是否输入密码错误

第一种是我的,第二种事我领导的想法 我的被推翻了
但是想想总觉得我的方式应该没多大问题,只是后者应该用的比较多而已

也希望有朋友能分享下自己的密码验证方式

------解决方案--------------------
自己写的算法再配合hash、md5存数据库

登录的时候先加密再匹配
------解决方案--------------------
主要是lz的想法是每次登陆都要产生随机数,判断。

第二种方法是只要产生一次随机数,每次登陆都到数据库中获取随机数。。
------解决方案--------------------
使用用户名作为 salt 再跟密码进行 hash

hash(hash(username + password) + password)

MD5 和 SHA-1 的话最好暂时不要使用了,因为有彩虹表的存在

推荐使用 SHA-256 摘要,使用 Base64 保存摘要结果
------解决方案--------------------
方法1: 加密2次(原密码加密,密码加密+随机) ,每次都产生随机数。
方法2: 加密1次(密码加密),只有i注册时产生随机数。

安全上,没有太大的差别。 但在处理上,楼主的方法有点多余(相对方法2来说)。