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

news2024/11/22 9:16:19

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在计算机安全领域,得到广泛的应用,以上就是这些算法的特性以及区别。小伙伴们可以根据实际情况灵活地选用这些算法,以达到实际目的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/193722.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JavaWeb:过滤器与监听器

一、过滤器Filter 1.1 过滤器Filter概述 Filter表示过滤器,是JavaWeb三大组件(Servlet、Filter、Listener)之一。Servlet我们之前都已经介绍过了,Filter和Listener我们今天都会进行介绍。 过滤器可以把对资源的请求 拦截 下来&…

Python的判断语句

进行逻辑判断,是生活中常见的行为。 同样,在程序中,进行逻辑判断也是最为基础的功能。 布尔类型和比较运算符 布尔类型的字面量: true 表示真(是、肯定)false 表示假(否、否定) …

【tkinter】用不到50行Python代码,写一个扫雷小游戏

文章目录定制按钮生成雷区主流程基础知识:StringVartkinter布局 定制按钮 学会了布局和绑定事件,就可以开发一些简单的应用,比如扫雷小游戏。从外观来看,扫雷就是一个按钮矩阵,左键点击按钮,如果按钮里埋…

myBaits Target Capture Kits;myBaits 靶向捕获试剂盒,快速捕获富集目标序列

myBaits Target Capture Kits可以快速捕获富集目标序列,提高NGS研究效率,兼容Illumina,PacBio 和 Nanopore等多种测序平台。Arbor Biosciences使用oligo合成专利技术,为您提供高质量、高性价比的捕获试剂盒。适用于各种基因组类型…

pytest简介

介绍pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:简单灵活,容易上手支持参数化能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytestrequ…

我写了一个脚本,实现了图片分类问题模型训练的全自动化训练

众所周知,图片分类问题属于计算机视觉中比较容易解决的问题之一 但 这几天被数据集的问题搞得焦头烂额, 照理说分类问题的数据集应该比较好制作 但 如果之前没有现成的数据集 也会变得比较麻烦 直到我偶然发现了一个HuggingFace的图片搜索API 无限次调用 而且不需要身份验证 真…

如何实现报表集成?(五)——集成案例分享

在前面几篇,我们分别给大家介绍了报表工具的系统集成架构、用户同步/单点登录、资源集成和权限集成,从整体上对报表工具实现系统集成的各个方面都作了针对性的阐述。那别的用户实际上是如何做报表集成的呢? 这一篇,我们来看一下某…

408—二叉树与树

二叉树的一些概念://二叉树有严格的左右子树之分,度数为2的树则没有对此进行要求。常见的两种二叉树://如上E为满二叉树,每一层的结点个数都达到了当层能达到的最大结点数//满二叉树自上而下,从左到右依次进行编号&…

易于理解的完全立方体计算的多路数组聚集方法

自己琢磨半天终于搞懂了,可能是自己悟性不够吧-_-|| 多路数组聚集其实就是对维度(dimension)进行选择,保留一些常用的可以很方便地生成别的子立方体的立方体(cube)。对一个维做聚集(aggregation)其实就是按照这个维度的方向做加法,把这个维度…

Linux下的动静态库及链接

目录 常识 动态链接 静态链接 两者的比较 动态库与静态库 常识 我们平时写的代码和标准库是两回事,像C标准库提供给我们一些函数方便使用,降低程序员工作成本。比如写个printf("hello world"); 我们只是调用了库里的函数,并没…

字节跳动“技穷”,火山引擎“啃老”

文丨智能相对论作者丨沈浪「云」的赛道正在细化,是显而易见的趋势,诸如汽车云、营销云、视频云、零售云等等,大致可以理解为通过云计算等技术推动特定行业场景实现数字化转型的解决方案。之所以出现这种情况,存在多个层面的原因&a…

Kubernetes部署Postgresql

环境:Postgresql的Docker镜像 ->参考Docker安装部署PostgresqlCentos7.x kubernetes1.23.7 docker1.13.1 postgres12.7pg的docker镜像已经上传到云平台。Kubernetes参考:https://kubernetes.io/zh-cn/docs/concepts/configuration/configmap基本命…

Youngter-drive 题解

1.查壳 32bit,加了UPX壳 2.虚拟机脱壳 Youngter-drive脱壳3.静态分析寻找思路 跟进main_0函数 线程控制的知识不懂,去搜一下函数 createMutexW 函数 创建或打开命名或未命名的互斥对象。 HANDLE CreateMutexW( [in, optional] LPSECURITY_ATTRIBUTES lp…

通信原理笔记—部分响应基带传输系统

目录 基本设计思想: 问题的引入与考虑: 第一类部分响应系统: 定义奈奎斯特脉冲: 定义第一类部分响应系统的冲激响应: 第一类部分响应系统冲激响应与频率特性波形图: 第一类部分响应系统信号波形示例: 编码发送与接收解码过程示例: 第…

Biome-BGC生态系统模型与Python融合技术实践应用

查看原文>>> Biome-BGC生态系统模型与Python融合技术实践应用 Biome-BGC是利用站点描述数据、气象数据和植被生理生态参数,模拟日尺度碳、水和氮通量的有效模型,其研究的空间尺度可以从点尺度扩展到陆地生态系统。 在Biome-BGC模型中&#xf…

Tomcat 源码启动

要想学习 Tomcat 原理,看源码是最直接的方式,而想要理解源码,我们要想把它在本地跑起来。 下载源码 到 Tomcat 的官网 http://tomcat.apache.org 上下载 Tomcat 的源码 下载下来是一个压缩包文件 解压之后目录结构如下 用IDEA打开 在…

redis集群管理工具HHDBCS

参考地址: HHDBCS下载地址 Redis教程 1 快速介绍 1.1 什么是HHDBCS? HHDBCS是恒辉信达公司推出的通用数据库管理桌面工具,专为简化数据库的管理及数据管理成本而设计,让用户通过统一的桌面视图管理成千上万的异构数据库实例。 它采用了…

【Feign】Spring框架集成Feign

Spring框架集成Feign1、Feign-简介2、spring-cloud快速整合OpenFeign3、Feign日志4、Feign契约配置5、Feign配置超时时间6、Feign拦截器7、Feign断路器1、Feign-简介 Feign是Neflix开发的声明式、模块化的HTTP客户端,集成了Ribbon、RestTemplate实现了负载均衡的执…

快收藏,2023有这些财务分析模板就够了

相信很多的财务人都才刚刚经历一个兵荒马乱的年终,各种核算、整理、分析,工作量直线上升,说不定加班几点半个月都未必能歇一下。但不用担心,在接下来的2023里,可以通过BI财务分析报表模板来高效解决这些问题。 BI软件…

[python][VTK]vtk安装后测试代码

测试vtk版本为9.2.5 import vtk cone_a vtk.vtkConeSource() coneMapper vtk.vtkPolyDataMapper() coneMapper.SetInputConnection(cone_a.GetOutputPort()) coneActor vtk.vtkActor() coneActor.SetMapper(coneMapper) ren1 vtk.vtkRenderer() ren1.AddActor(coneActor…