读懂hash

本文详细介绍了单向散列加密的概念、特性,如MD5、SHA-1、SHA-2和SHA-3算法,以及它们在用户密码保护、接口验签和文件完整性校验中的应用,强调了加盐处理的重要性。
摘要由CSDN通过智能技术生成

1.参考文档

一文搞懂单向散列加密:MD5、SHA-1、SHA-2、SHA-3 - 知乎

https://www.cnblogs.com/makai/p/11130703.html

哈希加盐法(HASH+SALT)-CSDN博客

2.定义

单向散列函数(one-way hash function)是指对不同的输入值,通过单向散列函数进行计算,得到固定长度的输出值。这个输入值称为消息(message),输出值称为散列值(hash value)。

无论消息的长度有多少,使用同一算法计算出的散列值长度总是固定的。比如 MD5 算法,无论输入多少,产生的散列值长度总是 128 比特(16字节)。

3.特性

抗碰撞性

使用相同的消息,产生的散列值一定相同。

使用不同的消息,产生的散列值也不相同。哪怕只有一个比特的差别,得到的散列值也会有很大区别。

单向性

只能通过消息计算出散列值,无法通过散列值反算出消息。

4.常见算法

MD5 与 SHA-1 算法已被攻破,不应该被用于新的用途;SHA-2 与 SHA-3 还是安全的,可以使用。

SHA-2包括:SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224、SHA-512/256。

SHA-3包括:SHA3-224、SHA3-256、SHA3-384、SHA3-512。

5.用法

单向散列函数并不能确保信息的机密性,它是一种保证信息完整性的密码技术。

5.1 用户密码保护

用户在设置密码时,不记录密码本身,只记录密码的散列值,只有用户自己知道密码的明文。校验密码时,只要输入的密码正确,得到的散列值一定是一样的,表示校验正确。

为了防止彩虹表破解,还可以为密码进行加盐处理,只要验证密码时,使用相同的盐即可完成校验。

使用散列值存储密码的好处是:即使数据库被盗,也无法将密文反推出明文是什么,使密码保存更安全。

加盐哈希

通过加入盐值(salt)即盐化可以很好的防治这种攻击手段。盐值是一组随机的字符串,通过插入在口令后进行HASH算法,这样即使是相同的口令,插入不同的盐值后生成的HASH值也是不相同的,由于MD5的不可逆性,想要逆向破解MD5也是非常耗时间的。

具体的流程是:

用户注册时:

1、用户在网站注册时提供ID与口令

2、系统为用户分配盐值

3、盐值插入口令后进行HASH

4、将ID,HASH值与盐值存入数据库

身份验证时:

1、用户提供ID与口令

2、系统在数据库中通过用户提供的ID查找HASH值与盐值

3、将盐值插入用户提供的口令后进行HASH

4、将HASH值与数据库中的HASH值比较,相等则验证成功,反之验证失败

5.2 接口验签

为了保证接口的安全,可以采用签名的方式发送。

发送者与接收者要有一个共享秘钥。当发送者向接收者发送请求时,参数中附加上签名(签名由共享秘钥 + 业务参数,进行单向散列函数加密生成)。接收者收到后,使用相同的方式生成签名,再与收到的签名进行比对,如果一致,验签成功。

5.3 文件完整性校验,云盘秒传

“秒传”功能可以利用单向散列函数来实现。

当我们上传一个文件时,云盘客户端会先为该文件生成一个散列值。拿着这个散列值去数据库中匹配,如果匹配到,说明该文件已经在云服务器存在。只需将该散列值与用户进行关联,便可完成本次“上传”。

这样,一个文件在云服务器上只会存一份,大大节约了云服务器的空间。

  • 22
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值