博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
随机salt二次加密及hash加密漫谈
阅读量:4049 次
发布时间:2019-05-25

本文共 1176 字,大约阅读时间需要 3 分钟。

我们知道,如果直接对密码进行散列,那么黑客(统称那些有能力窃取用户数据并企图得到用户密码的人)可以对一个已知密码进行散列,然后通过对比散列值得到某用户的密码。换句话说,虽然黑客不能取得某特定用户的密码,但他可以知道使用特定密码的用户有哪些。

 

加Salt可以一定程度上解决这一问题。所谓加Salt,就是加点“佐料”。其基本想法是这样的——当用户首次提供密码时(通常是注册时),由系统自动往这个密码里撒一些“佐料”,然后再散列。而当用户登录时,系统为用户提供的代码撒上同样的“佐料”,然后散列,再比较散列值,已确定密码是否正确。

 

这里的“佐料”被称作“Salt值”,这个值是由系统随机生成的,并且只有系统知道。这样,即便两个用户使用了同一个密码,由于系统为它们生成的salt值不同,他们的散列值也是不同的。即便黑客可以通过自己的密码和自己生成的散列值来找具有特定密码的用户,但这个几率太小了(密码和salt值都得和黑客使用的一样才行)。

 

下面详细介绍一下加Salt散列的过程。介绍之前先强调一点,前面说过,验证密码时要使用和最初散列密码时使用“相同的”佐料。所以Salt值是要存放在数据库里的。

 

 

用户注册时:

 

1)用户提供密码(以及其他用户信息);

2)系统为用户生成Salt值;

3)系统将Salt值和用户密码连接到一起;

4)对连接后的值进行散列,得到Hash值;

5)将Hash值和Salt值分别放到数据库中。

 

 

登录时:

1)用户提供用户名和密码;

2)系统通过用户名找到与之对应的Hash值和Salt值;

3)系统将Salt值和用户提供的密码连接到一起;

4)对连接后的值进行散列,得到Hash'(注意有个“撇”);

5)比较Hash和Hash'是否相等,相等则表示密码正确,否则表示密码错误。

hash加密的坏处是会被反查出来。

密码存储形式有三种:明文、加密、哈希值。

明文肯定是不可取的;加密的优点是可以还原密码,缺点是不如哈希值。所以我们一般用哈希值存储密码,常用的计算哈希值的方法是  和 SHA-1,本文以 MD5 为例。

为哈希值增加一个随机盐可以增码的

增加简单密码的安全性

假设用户的密码是 1,那么 MD5 值就是:c4ca4238a0b923820dcc509a6f75849b。

这个在网上很容易被反查出来,比如这两个网址:、。

但如果加上随机盐就不同了,假如我们的随机盐是 6 个随机字符,就比如是:xids#3,的就是 MD5("xids#3" + "1"),随机盐被明文存储在另一个字段时,到时候判断密码时再把密码和随机盐混合起来计算。而要反查 MD5("xids#3" + "1") 就不是件容易的事了。

让相同的密码具有不同的结果

由于有随机盐参与了 MD5 运算,所以相同的密码,由于随机盐不同,哈希值就不同了。

转载地址:http://gpbci.baihongyu.com/

你可能感兴趣的文章
我用一天时间做了一个MTK版本【转】
查看>>
把人生看透
查看>>
LED背光学习_可变模式分数电荷泵实现低功耗手机LCD背光驱动方案
查看>>
LED背光学习_标准和白光LED的基础知识与驱动
查看>>
秒 毫秒 微秒 纳秒 皮秒 飞秒
查看>>
认识A2DP
查看>>
寂寞是因为思念谁
查看>>
模拟屏学习资料_电视标准:PAL和NTSC
查看>>
模拟屏学习资料_电视标准:接收制式
查看>>
模拟屏学习资料_什么是PAL制式
查看>>
模拟屏学习资料_模拟视频 入门
查看>>
模拟屏学习资料_缩写补充(1)
查看>>
关于字符串逆序的问题
查看>>
嵌入式及手机开发[笔试题目]
查看>>
Sony Ericsson Z610i
查看>>
MTK的暗码
查看>>
LCD的接口分类
查看>>
LCD点屏心得
查看>>
可重入函数
查看>>
C语言嵌入式系统编程修炼之道
查看>>