【MD5】什么是MD5?md5的简要描述

简介: 【MD5】什么是MD5?md5的简要描述

一、MD5概述

MD5:英文全称是 Message-Digest Algorithm 5。

中文名为 消息摘要算法第五版。它是消息摘要算法,属于 Hash 算法的一种。

正常情况下,它的结果是一个 长度为 32位 的 16进制 的 字符串。

也有一些地方会用到 16 位的 MD5的结果,它实际上是从 32位 字符串中取中间的第9位到第24位的部分,即长度是 16位。

二、MD5的主要特点

  • 不可逆,相同的数据的MD5值肯定一样,不同数据的MD5值不一样(理论上可能会有相同的,这个是学习的越深就越清楚)。

一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文是可以有无数多个的。比如主流使用的MD5将任意长度的字符串映射为一个128bit(16 * 8)的大整数。也就是一共有 2的128次方种可能,大概是 3.14*10的38次方,这个数字是有限的,但是世界上可以被用来加密的原文则有无数的可能性

三、MD5的性质

  1. 压缩性:任意长度的数据,算出的MD5值长度都是固定的(相当于超损压缩)。
  2. 抗修改性:对原数据进行任何改动,哪怕是只修改1个字节,所得到的MD5值都会天差地别。
  3. 容易计算:从原数据计算出MD5值很容易就可以计算出来。
  4. 弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。注意这里是非常困难,并不是一定找不到。
  5. 强抗碰撞性,想找到两个不同的数据,使它们具有相同的MD5值,是非常困难的。注意这里是非常困难,并不是一定找不到。

四、MD5破解

MD5有不可逆的特点,但是不可逆,并是代表不能破解。

某些MD5破解网站,专门用来查询MD5码,原理是它通过把常用的密码先进行MD5处理,然后将数据存储起来,然后再跟需要查询的MD5结果匹配,这时就有可能通过匹配的MD5值得到明文数据,所以有些简单的MD5码是可能反查到加密前的明文的。

五、MD5防破解

  • 多重加密

所谓多重加密,其实 就是把要加密的原文加密成MD5密文,然后再一次将MD5密文加密成MD5密文,多试几次,一般3次以上,上线破解的网站就匹配不上了。记住:匹配不上,不一定就是足够安全哦,只是不容易被轻易破解了(因为第二次要破解的原文是一个32位的16进制的字符串,以此类推),增加了破解的时间成本而已。

  • 加盐加密

比如在Java语言中的 Md5Crypt.apr1Crypt(“要加密的密文”, “自定义盐值”), 可以多重使用,自行定义哈。

六、MD5的用途

这个一定要知道哈。

  1. 密码存储

处于安全考虑,所有的原生密码不能直接存储到数据库中,以防数据泄露导致许多问题出现,因此,会将明文密码经过MD5加密后存储到数据库中。

  1. 一致性校验

下载文件的校验码,比如双方约定的字符串或者文件,发送方可提供文件的同时,也提供MD5结果,用于接收方接收后对文件重新 MD5得出结果做对比,就知道文件是否下载完整,或者传输过程中有无被篡改等。

本文完结!


相关文章
|
弹性计算 运维 监控
学生免费云服务器ECS——阿里云“飞天加速计划”使用体验(windows)
第一次接触云服务器,发现云服务器是一种很强大的弹性可伸缩的云计算服务,可以帮助我们降低IT成本,提升运维效率。云服务器控制面板整合了对于云服务器的常用管理功能,通过云服务器控制面板可以看到云服务器的配置信息,而且可以对云服务器执行重启、关闭、启动、重置、更改密码、远程连接、更换操作系统等操作。而且还可以随时查看当天云服务器的监控信息。
学生免费云服务器ECS——阿里云“飞天加速计划”使用体验(windows)
|
1月前
|
人工智能 算法 机器人
6类生活垃圾检测数据集(2500张)|YOLO训练数据集 智能垃圾分类 环卫视觉检测 垃圾分拣识别
本数据集含2500张真实场景生活垃圾图像,涵盖纸箱、玻璃、金属、厨余有机物、纸张、塑料6类,YOLO标准格式,标注精准、场景多样(含光照变化、遮挡、复杂背景),适配YOLOv5/v8/v11、RT-DETR等主流模型,助力智能垃圾分类、环卫机器人及环保视觉系统研发。
|
6月前
|
运维 Kubernetes 微服务
微服务上云:基于ACK Kubernetes集群的容器化部署全流程
本文详解基于阿里云容器服务ACK的微服务容器化全流程,涵盖架构设计、集群搭建、应用编排、安全部署与可观测性实践,提供从本地到云端的落地指南,助力企业构建高弹性、高可用的云原生生产环境。
|
存储 芯片 内存技术
存储器的分类
存储器的分类
1731 1
|
JSON API Go
Go-Zero从0到1实现微服务项目开发(二)
继续更新GoZero微服务实战系列文章:上一篇被GoZero作者万总点赞了,本文将继续使用 Go-zero 提供的工具和组件,从零开始逐步构建一个基本的微服务项目。手把手带你完成:项目初始化+需求分析+表结构设计+api+rpc+goctl+apifox调试+细节处理。带你实现一个完整微服务的开发。
648 1
|
JSON 监控 编译器
|
消息中间件 数据库
RabbitMQ启动报错:Error during startup: {error, {schema_integrity_check_failed,
通过上述步骤,可以逐步排查和解决RabbitMQ启动时出现的 `Error during startup: {error, {schema_integrity_check_failed, ...}}`错误。这些步骤包括检查磁盘空间、修复文件权限、清理Mnesia数据库、检查日志文件以及升级或重装RabbitMQ。希望这些方法能帮助您解决问题,使RabbitMQ顺利启动并正常运行。
1111 1
|
JSON 监控 安全
在Linux中,如何使用Suricata进行实时网络威胁检测?
在Linux中,如何使用Suricata进行实时网络威胁检测?
|
消息中间件 Kafka 应用服务中间件
微服务从代码到k8s部署应有尽有系列(一)
微服务从代码到k8s部署应有尽有系列(一)
|
SQL 分布式计算 资源调度
一文解析 ODPS SQL 任务优化方法原理
本文重点尝试从ODPS SQL的逻辑执行计划和Logview中的执行计划出发,分析日常数据研发过程中各种优化方法背后的原理,覆盖了部分调优方法的分析,从知道怎么优化,到为什么这样优化,以及还能怎样优化。
105138 1