MD5、SHA-1、SHA-2、SHA-3都是比较常见的单向散列函数,这几种单向散列函数都有自己的特性。下面,给大家介绍一下它们的区别,以及MD5、SHA-1、SHA-2、SHA-3的安全性如何,哪种算法比较安全?

一、简介

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

单向散列函数也被称为消息摘要函数、哈希函数或者杂凑函数。输入的消息也称为原像(pre-image)。输出的散列值也称为消息摘要(message digest)或者指纹(fingerprint),相当于该消息的身份证。

单向散列函数有多种实现算法,常见的有:MD5、SHA-1、SHA-2和 SHA-3。

二、有哪些特性

1、散列值长度固定

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

2、消息不同其散列值也不同

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

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

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。

四、为什么说MD5不够安全?

因为字典表很大,网上有很多md5解密网站(例如:md5.cn),就像一个字典表。通过数据库存储很多的常用密码,可以在很短的时间内查找任何哈希值的答案。这种数据库占用大量的磁盘空间,具有一定的成功率。在计算机安全领域,很多人用到MD5解密网站,通过这类型的网站,可以提高工作效率,大家可以去试试。

五、主要区别

1、校验值的长度不同,MD5校验位的长度是16个字节(128位);SHA1是20个字节(160位);SHA256是32个字节(256位); SHA384为48字节(384位)、SHA512为64字节(512位)。

2、运行速度不同,SHA-3的运行速度最慢,然后是SHA-2,SHA1,最后是MD5。

六、哪种算法比较安全?

SHA-2 与 SHA-3 还是安全的,比MD5 与 SHA-1安全。

七、应用场景有哪些?

应用场景有:用户密码保护、接口验签、文件完整性校验、云盘秒传等。

MD5、SHA-1、SHA-2、SHA-3在计算机安全领域,得到广泛的应用,以上就是这些算法的特性以及区别。小伙伴们可以根据实际情况灵活地选用这些算法,以达到实际目的。

一文搞懂MD5、SHA-1、SHA-2、SHA-3,哪个算法比较安全相关推荐

  1. 一文搞懂【知识蒸馏】【Knowledge Distillation】算法原理

    知识蒸馏算法原理精讲 文章目录 知识蒸馏算法原理精讲 1. 什么是知识蒸馏? 2. 轻量化网络的方式有哪些? 3. 为什么要进行知识蒸馏? 3.1 提升模型精度 3.2 降低模型时延,压缩网络参数 3 ...

  2. 一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  3. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  4. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  5. 一文搞懂 Java 线程中断

    转载自   一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...

  6. 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm

    ***一文搞懂HMM(隐马尔可夫模型)*** 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序, ...

  7. 一文搞懂如何使用Node.js进行TCP网络通信

    摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...

  8. 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass

    本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...

  9. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下

    B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...

最新文章

  1. BS-XX-007基于JSP实现户籍管理系统
  2. oracle锁表语句执行提示无法终止当前对话_显示Oracle数据库表或行上持有锁的所有会话...
  3. 【caffe】使用draw_net绘制net结构
  4. ALV中调用Excel, 丢掉前面的0问题解决
  5. visio studio json工具_《产品经理入门指南》彩蛋2:别技淫原型图!你的Visio和Balsamiq Mockup入门了吗?...
  6. cesium添加填充_Cesium中级教程1 - 空间数据可视化(一)
  7. 【今日CV 计算机视觉论文速览 第110期】Thu, 2 May 2019
  8. php算法两数之和 复杂度,每天一道leetcode算法题:两数之和-php版
  9. 自学前端两三个月,很迷茫,有大佬可以指导吗?
  10. 计算机与管理科学的交叉与融合,计算机信息管理学科交叉融合研究论文
  11. NYOJ--22--素数求和问题
  12. 如何在Mac上的“活动监视器”中运行系统诊断?
  13. 基于目标检测的电车充电插孔检测实践
  14. iOS开发UI篇—Button基础
  15. 数据分析实战(五)基于R语言的Kmean聚类分析实战
  16. vim - 之快速删除指定符号的内容
  17. 怎么把cad做的图分享给别人_CAD命令大全分享,作图快人两步
  18. 智慧农业,绿色农业智慧管理平台
  19. DDR2(SDRAM)初始化 28个步骤总结
  20. android内置so库,带so库的apk正确内置到system/app详解

热门文章

  1. matlab 相关性分析 相关系数地图生成
  2. android客户端接入新浪、腾讯微博以及人人网
  3. ChinaSoft 论坛巡礼 | 软件工程教学案例交流与竞赛
  4. 2022年ACM杰出会员名单公布:23位华人学者入选
  5. 一次线上服务器cpu使用率超过1250%的排查与优化
  6. 毕业设计-基于微信小程序与云开发的成绩查询系统
  7. 金蝶K3案例教程仓存管理后台配置
  8. android保存到本地的图片、视频相册里找不到怎么办?
  9. 力天创见客流工程实施
  10. Qt5编译使用QFtp