前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >3分钟学会--摘要算法

3分钟学会--摘要算法

作者头像
木可大大
发布2018-07-25 15:09:43
3700
发布2018-07-25 15:09:43
举报
文章被收录于专栏:木可大大木可大大

摘要算法又称哈希算法,它表示输入任意长度的数据,输出固定长度的数据,相同的输入数据始终得到相同的输出,不同的输入数据尽量得到不同的输出。

Java中的Object.hashCode()方法就是一个摘要算法,它可以输入任意数据,它的输出是一个int类型,即4个字节的固定长度数据,同时,相同的输入会得到相同的输出,这也是重写equals方法必须重写hashCode方法的原因。

由于输出的长度是固定且输出的长度是不固定的,意味着两个不同的输入可能得到相同的输出,这就是碰撞问题。这就要求在设计Hash算法时,尽量使得碰撞率低,而且不能猜测输出,例如:hash("java1")="123456",hash("java2")="123457",那么我们就可以猜测出hash("java3")="123458",也就是说一个安全的hash算法很难从输出反推输入,只能依靠暴力穷举。

目前常用的摘要算法:

算法

输出长度

MD5

128bit

SHA-1

160bit

SHA-256

256bit

MD5

MD5的用途:验证文件完整性;存储用户口令。

系统不用存储用户原始口令,而是存储用户原始口令的MD5,系统计算用户输入的原始口令的MD5并与数据存储的MD5进行对比,如果相同,则说明口令正确,反之则说明口令错误。在使用MD5时我们需要注意彩虹表攻击,彩虹表就是预先存储常用口令和对应MD5值,那么黑客就可以根据彩虹表反查MD5对应的密码,所以为了抵御彩虹表攻击我们不能简单的记录原始口令的MD5值,而是对每个口令额外添加随机数salt,即md5(salt+password)。Java代码如下:

SHA-1

SHA-1算法也是一种哈希算法,输出160bit,它的同类型算法有SHA-256和SHA-512,输出的长度分别是256bit和512bit。SHA-1在Java中使用同MD5类似:

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-05-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 木可大大 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MD5
  • SHA-1
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档