网站数据库中“密码加密”方法思考

博主,开始时候,写的web应用,数据库中的密码,都是直接保存的。真正的原汁原味,真正的所见即所得。

后来,看了别人的web应用都是MD5加密的,感觉很不错,自己也在应用中加入了MD5加密,貌似“不可逆”的,哈哈,看起来也专业了许多,后来听说CSDN用户信息被黑客窃取了,自己也赶紧去换了密码。

今天,无意间看了http://howe.im/(探微·智在未来)的一篇博文《安全密码机制(salt机制)》,才知道了,单纯使用MD5加密,也是不安全的,这里简单说下,所读博文的内容和自己的一点认识吧。

    首先,解释下,为什么单纯MD5加密,是不安全的,我们暂且不论MD5是否可以由密文推出明文(有32位密文计算出加密前的密码),也不论用户的密码是否符合很高的安全性(加入大小写字母、数字、特殊字符等),当黑客窃取一个大型网站的数据库信息后,通过MD5加密(而非解密)方法,不断加密一些密码,如123abc,加密后A906449D5769FA7361D7ECC6AA3F6D28,在数据库中搜索,是否存在匹配密文,如果存在,则相应的用户密码就被破解了。不断的穷举密码,加密,匹配。这个速度是很快的,MD5加密很快,数据库匹配可以优化。

    然后,说下,博文中介绍的salt机制。

    1、用户注册时

    用户注册密码A、客户端生成一个随机码B,将两者组合到一起,然后MD5加密为C,将随机码B和加密后的C,两者分开提交到服务器,保存到数据库。

    2、用户登录时

    用户只需要提交密码,提交到服务器后,将密码和该用户数据库中保存的随机码组合,然后MD5加密,验证即可。

问题:这里有一个漏洞,那就是用户登录时,提交的密码,如果是明文,那么很容易被恶意获取。用户提交的信息是有必要加密的,这才是负责任的。

我看了另外一边博文,介绍了腾讯的朋友网,它是怎么加密提交信息的,这里简单说下。

    1、将用户密码A加密了三次B,然后与验证码字符C组合,然后进行一次MD5加密成密文D,提交到服务器,这里注意,提交是不包含验证码C的,因为验证码C是服务器生成,提前发送到Client端的。服务器端借助验证码C和用户提交来的密文D,获得密码,进行后续的验证。

这里又有一个问题了,说好的MD5,一般人是没法破解的呢,怎么这里有这个破解步骤呢,其实这是我臆想的步骤,可能它没有破解的,我为什么要破解的,我是想将这两部分整合,所以破解,如果朋友网,没有用salt的加密机制,那么就不需要获得密码A了,哈哈……说的很乱。

总之,可以采取的方案如下:

1、服务器端,用户注册时,保存 (随机码A) 和 (密码B+随机码A进行MD5加密)密文C

2、提交注册或登录信息时,客户端提交(密码M+验证码N进行可逆的方法加密)密文O,服务器端,保存有验证码N,故而,可以逆向运算获得密码M,然后提取数据库中的随机码A,组合后进行MD5加密,与数据库验证。注:虽然密文O是可逆的运算,但是,在提交过程中是不包括验证码N的,加上比较独特的加密算法,基本可以保证安全了,呵呵,除非,服务器端到用户端传输的报文也被截获了,那就没办法了。话说回来,就算获得了密码,那个注册时候生成的随机码A,也是很难获得的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
软件特色:针对勒索病毒加密的SQL 数据库有特殊的修复算法,可匹配用友,金蝶数据库结构关系. 支持7.0、SQL2000、SQL2005、SQL2008、 SQL2008R2 、SQL2012、 SQL2014、 SQL2016; •SQL数据库修复软件操作简便; •可以修复数据库置疑状态; •可以修复数据库无法附加或附加报错; •可以修复数据表查询错误; •可以修复MDF文件损坏; •可以修复数据库备份文件损坏; •可以修复数据库被恢复后还是坏的; •可以修复一致性错误; •可以修复错误823; •可以修复输入数据有误; •可以修复运算溢出; •可以修复SQL数据库某些应用程序出错; •可以修复并行事务发生死锁; •支持数据库删除数据的恢复; •支持从日志LDF文件恢复删除的记录; 软件特色:针对勒索病毒加密的SQL 数据库有特殊的修复算法,可匹配用友,金蝶数据库结构关系. 支持7.0、SQL2000、SQL2005、SQL2008、 SQL2008R2 、SQL2012、 SQL2014、 SQL2016; •SQL数据库修复软件操作简便; •可以修复数据库置疑状态; •可以修复数据库无法附加或附加报错; •可以修复数据表查询错误; •可以修复MDF文件损坏; •可以修复数据库备份文件损坏; •可以修复数据库被恢复后还是坏的; •可以修复一致性错误; •可以修复错误823; •可以修复输入数据有误; •可以修复运算溢出; •可以修复SQL数据库某些应用程序出错; •可以修复并行事务发生死锁; •支持数据库删除数据的恢复; •支持从日志LDF文件恢复删除的记录;

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值