MD5有哪些特性,常用的MD5加密真的安全吗

news2024/9/27 15:34:56

在密码学中,MD5是比较常用的算法之一。大家都知道MD5曾一度被认为十分安全,并且在国内外得到广泛适用。然而,王小云教授的研究证明利用MD5算法的磕碰能够严重威胁信息体系安全,因此引发了密码学界的轩然大波。那么,关于MD5算法你了解多少,它有哪些特性,我们常用的MD5加密真的安全吗?

MD5简介

MD5全名Message-Digest Algorithm 5(信息-摘要算法)是一种不可逆的加密算法。可以产生出一个128位(16字节)的散列值(hash value),用于确保信息传输完整一致。

MD5的特性

压缩性:任意长度的数据,算出的MD5值长度都是固定的。

容易计算:从原数据计算出MD5值很容易。

抗修改性:对原数据进行任何改动,哪怕只修改1个字节,所得到的MD5值都有很大区别。

弱抗碰撞:已知原数据和其MD5值,想找到一个具有相同MD5值的数据(即伪造数据)是非常困难的。

从技术的角度来说,MD5真的很安全,因为MD5本身是不可逆的,因此没法解密,除了撞库这样的一个方式。在大数据时代,随意生成几个经常使用的密码的MD5密文,然后在百度上搜索md5解密网站,然后把密文复制粘贴进去,随意一个md5解密可能都可以解密出来。

什么是撞库

关于撞库,可能很多人都有所了解了吧,这里简单说以下它的原理:通过建立大型数据库,将常用的各种句子密码等加密成为密文,并存储在数据库中;然后拿着密文到数据库网站查询,就有可能查到密码,这是有解密成功的概率,不一定每种密文都能查询到密码。

随着各种加密原文的收集,在庞大的数据中积累了越来越多的大量句子,MD5似乎已不再安全,就像一个post请求,只是你认为他不是明文,他只是阻隔了一部分什么都不知道的人群。但是对于网络高手来说,只要抓住你的请求,数据大概率就会暴露。

日常网站开发,注册用户的密码通常是要求加密的,不然如果数据被窃取,那么用户的密码丢失就会对用户、公司造成可怕的影响。

MD5是经常使用的加密方式,它能够将任意长度的输入串通过计算获得固定长度的输出,而且在明文相同的状况下,才能得到相同的密文,这个算法是不可逆的,即使获得了加密之后的密文,也不可能经过解密算法反算出明文。

然而,你以为这样就安全了吗?

网上那么多md5解密的网站,到底真的能解密吗?对于简单的密码,一定能。因为可以提前对简单的弱密码进行md5加密,然后保存到数据库,形成md5对应的字典密码。然后利用反查法,只要字典中存在弱密码的md5加密串,那么就可以反向查找出对应密码。原理非常简单!

举个例子:

用户经常使用的密码654321的MD5密文是:

c33367701511b4f6020ec61ded352059

大数据平台可以保存大量字典。进行反向查找,那么显然md5并没有那么靠谱。再者,md5不安全的因素还在于很多曾今数据量庞大的网站都被解密过,这些被解密的网站用户信息都极大可能进入某客数据库字典。然而,很多用户其实一辈子都循环用着自己为数不多的那几个常用密码,太多显然也记不住。比如生日前缀加good 姓氏后面加特殊纪念日等。这就给字典类解密提供了可能性。

一些小伙伴甚至在很多平台上用同一密码,这样非常不安全,对于进入字典库的密码来说,早就已经被记录了。所以随着md5的时间推移,被解密的可能性会越来越大。也就是所谓的md5大数据平台,但由于很多人、很多平台都用相同的密码。所以你的密码一旦被md5大数据平台收录,那么md5就很容易被解密。

因为很容易理解,md5的解密就是反查法。由于md5的缺点就是相同密码加密的结果是一样的。也就是同一个密码加密后具备唯一性的特征。

程序开发人员如何避免反查法,降低被解密的可能性,那么就需要使用盐值加密,加入一个随机盐,这样一定程度上可以防止md5大数据字典法解密用户信息。只要随机盐不泄露,那么被解密的风险就降低了。

MD5虽然没有非常安全,但是用处还是很大的。因为虽然对于文件来说碰撞可能容易,但是对于限定长度的密码或者密文来说,MD5作为高性能高安全的数据签名算法,还是非常实用的。

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

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

相关文章

为什么JDK中String类的indexof不使用KMP或者Boyer-Moore等时间复杂度低的算法编辑器

indexOf底层使用的方法是典型的BF算法。 1、KMP算法 由来 外国人: Knuth,Morris和Pratt发明了这个算法,然后取它三个的首字母进行了命名。所以叫做KMP。 KMP真的很难理解,建议多看几遍 B站代码随想录,文章也的再好 …

【蓝桥杯备赛系列 | 真题 | 简单题】2014年第五届真题-分糖果

🤵‍♂️ 个人主页: 计算机魔术师 👨‍💻 作者简介:CSDN内容合伙人,全栈领域优质创作者。 蓝桥杯竞赛专栏 | 简单题系列 (一) 作者: 计算机魔术师 版本: 1.0 &#xff08…

【博客597】iptables如何借助连续内存块通过xt_table结构管理流量规则

iptables如何借助连续内存块通过xt_table结构管理流量规则 1、iptables 分为两部分: 用户空间的 iptables 命令向用户提供访问内核 iptables 模块的管理界面。内核空间的 iptables 模块在内存中维护规则表,实现表的创建及注册。 2、iptables如何管理众…

第十二章 数据库设计

前言 本文章为看视频所写。 视频链接:168. 14.1 数据库设计前言_哔哩哔哩_bilibili 目录 前言 章节提要 一、数据库设计过程 二、E-R模型 三、答题技巧 四、案例分析 1、案例1 二、案例2 章节提要 一、数据库设计过程 ER模型:是实体联系模型&#x…

第一章 数据结构绪论

数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间关系和操作等相关问题的学科。程序设计数据结构算法数据:是描述客观事物的符号,是计算机中可…

2.2、进程的状态与转换

整体框架 1、三种基本状态 进程是程序的一次执行。在这个执行过程中,有时进程正在被 CPU 处理,有时又需要等待 CPU 服务, 可见进程的状态是会有各种变化。 为了方便对各个进程的管理,操作系统需要将进程合理地划分为几种状态 ①…

随机梯度下降法的数学基础

梯度是微积分中的基本概念,也是机器学习解优化问题经常使用的数学工具(梯度下降算法)。因此,有必要从头理解梯度的来源和意义。本文从导数开始讲起,讲述了导数、偏导数、方向导数和梯度的定义、意义和数学公式&#xf…

SpringBoot-自动配置-切换内置web服务器

SpringBoot-自动配置-切换内置web服务器 介绍 SpringBoot的web环境中默认使用tomcat作为内置服务器其实SpringBoot提供了4种内置服务器供我们选择分别为:Jetty,Netty,Tomcat,Undertow我们可以很方便的进行切换 实例演示 在pom文件…

简单了解操作系统、进程内存管理

目录 前言: 一、操作系统: 操作系统的定位: 应用程序: 系统调用: 操作系统内核: 驱动程序: 硬件设备: 二、进程: 什么是进程? 进程的描述与组…

自定义类型,结构体、枚举、联合(C语言)

目录 结构体 结构体的基础知识: 结构体的声明: 特殊声明: 结构体的自引用 结构体变量的定义和初始化 结构体内存对齐: 修改默认对齐数: 结构体传参 结构体的柔型数组 柔型数组的书写 柔性数组的特点 柔性数组的使用 柔…

【Java寒假打卡】JavaWeb-Tomcat

【Java寒假打卡】JavaWeb-Tomcat服务器Tomcat下载和安装Tomcat的目录结构基本使用控制台乱码的问题IDEA集成TomcatJavaWeb项目的目录结构Tomcat-idea发布项目Tomcat-WAR包发布项目Tomcat配置文件的介绍Tomcat配置虚拟目录Tomcat配置虚拟主机服务器 Tomcat下载和安装 将下载好的…

干货 | 数据安全和个人信息保护审计的方法研究

以下内容整理自清华大学《数智安全与标准化》课程大作业期末报告同学的汇报内容。第一部分:概述我们的研究核心是个人信息保护合规审计,具体指个人信息处理活动是否遵守我国相关法律法规的监督性审计。在个保法出台后,我国形成了以内部审计为…

我用ChatGPT写神经网络:一字不改,结果竟很好用

自从去年底推出以来,对话式 AI 模型 ChatGPT 火遍了整个社区。 ChatGPT 的确是一个了不起的工具,就像一个「潘多拉魔盒」。一旦找到正确的打开方式,你或许会发现,自己再也离不开它了。 作为一个全能选手,人们给 Chat…

Fedora 38发布Budgie与Sway定制版

导读两款新的 Fedora 定制版将在 Fedora 38 发布时首次亮相。我们期待着它们在 Fedora 37 时出现,但在 Fedora 38 中终于来了! 早在 2022 年 5 月,Budgie 项目的主要开发者 Joshua Strobl ​​宣布​​,Budgie 已被提交到 Fedora…

第五届字节跳动青训营 前端进阶学习笔记(四)TypeScript入门

文章目录前言TypeScript概要1.什么是TypeScript2.TypeScript基本语法基础数据类型对象类型函数类型函数重载数组类型补充类型泛型约束和泛型默认参数类型别名和类型断言高级类型1.联合类型2.交叉类型3.类型守卫类型谓词总结前言 课程重点: TypeScript概要TypeScri…

Kubernets核心介绍及实战

1、资源创建方式 命令行YAML 2、Namespace 名称空间用来隔离资源 “namespace"通常被翻译为「命名空间」,听起来好像比较抽象,其实重点是在这个"space”。它和描述进程的虚拟地址空间的address space一样,都是提供一种独占的视角…

linux引导和启动程序

1.BIOS/Bootloader: 一上电,硬件强制让cpu的cs:ip寄存器指向bios程序的位置,从bios程序开始执行,由pc机的BIOS (0xFFFFO是BIOs存储的总线地址)把bootsect从某个固定的地址拿到了内存中的某个固定地址(0x90…

SpringAMQP快速入门

介绍Spring AMQP 项目将核心 Spring 概念应用于基于 AMQP 的消息传递解决方案的开发它提供了一个“模板”作为发送和接收消息的高级抽象它还通过“侦听器容器”为消息驱动的 POJO 提供支持这些库促进了 AMQP 资源的管理,同时促进了依赖注入和声明性配置的使用包含两…

纷享销客华为云CXO思享会华东系列活动成功举办!

3天,3座城市,5家标杆企业,11位不同领域的专家,超百位企业家云集。1月10日-13日,纷享销客与华为云联合举办的“数字创新 高效增长”CXO思享会华东系列活动成功举办。全国各地超百名企业家齐聚华东参与本次思享会&#x…

kubeasz安装kubernetes1.25.5

kubeasz安装k8s 1 配置 kubeasz安装kubernetes,只需要做好网通配置,做好ssh免密通信配置即可 1.1 环境介绍 OS:CentOS Linux release 8.5.2111 机器: IPhostname10.104.10.201k8s-master10.104.10.202k8s-node 所有机器,都将…