首页 常见问题 md5加密算法

md5加密算法

Sep 02, 2019 am 09:18 AM
md5

什么是MD5算法

MD5信息摘要演算法(英语:MD5 Message-Digest Algorithm),一种被广泛使用的密码杂凑函数,可以产生出一个128位元(16位元组)的散列值(hash value),用于确保信息传输完整一致。

md5加密算法

MD5功能(推荐学习:web前端视频教程

输入任意长度的信息,经过处理,输出为128位的信息(数字指纹); 

不同的输入得到的不同的结果(唯一性);

MD5属不属于加密算法

认为不属于的人是因为他们觉得不能从密文(散列值)反过来得到原文,即没有解密算法,所以这部分人认为MD5只能属于算法,不能称为加密算法; 

认为属于的人是因为他们觉得经过MD5处理后看不到原文,即已经将原文加密,所以认为MD5属于加密算法;我个人支持前者,正如认为BASE64算法只能算编码一样。

MD5算法是否可逆?

MD5不可逆的原因是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。

不过有个地方值得指出的是,一个MD5理论上的确是可能对应无数多个原文的,因为MD5是有限多个的而原文可以是无数多个。比如主流使用的MD5将任意长度的“字节串映射为一个128bit的大整数。

也就是一共有2^128种可能,大概是3.4*10^38,这个数字是有限多个的,而但是世界上可以被用来加密的原文则会有无数的可能性。

不过需要注意的一点是,尽量这是一个理论上的有限对无限,不过问题是这个无限在现实生活中并不完全成立,因为一方面现实中原文的长度往往是有限的(以常用的密码为例,一般人都在20位以内),另一方面目前想要发现两段原文对应同一个MD5(专业的说这叫杂凑冲撞)值非常困难,因此某种意义上来说,在一定范围内想构建MD5值与原文的一一对应关系是完全有可能的。所以对于MD5目前最有效的攻击方式就是彩虹表,具体详情你可以通过谷歌了解。

MD5相当于超损压缩。

MD5用途

1.防止被篡改: 

1)比如发送一个电子文档,发送前,我先得到MD5的输出结果a。然后在对方收到电子文档后,对方也得到一个MD5的输出结果b。如果a与b一样就代表中途未被篡改。 

2)比如我提供文件下载,为了防止不法分子在安装程序中添加木马,我可以在网站上公布由安装文件得到的MD5输出结果。 

3)SVN在检测文件是否在CheckOut后被修改过,也是用到了MD5.

2.防止直接看到明文: 

现在很多网站在数据库存储用户的密码的时候都是存储用户密码的MD5值。这样就算不法分子得到数据库的用户密码的MD5值,也无法知道用户的密码。(比如在UNIX系统中用户的密码就是以MD5(或其它类似的算法)经加密后存储在文件系统中。

当用户登录的时候,系统把用户输入的密码计算成MD5值,然后再去和保存在文件系统中的MD5值进行比较,进而确定输入的密码是否正确。

通过这样的步骤,系统在并不知道用户密码的明码的情况下就可以确定用户登录系统的合法性。这不但可以避免用户的密码被具有系统管理员权限的用户知道,而且还在一定程度上增加了密码被破解的难度。)

3.防止抵赖(数字签名): 

这需要一个第三方认证机构。例如A写了一个文件,认证机构对此文件用MD5算法产生摘要信息并做好记录。

若以后A说这文件不是他写的,权威机构只需对此文件重新产生摘要信息,然后跟记录在册的摘要信息进行比对,相同的话,就证明是A写的了。这就是所谓的“数字签名”。

MD5安全性

普遍认为MD5是很安全,因为暴力破解的时间是一般人无法接受的。实际上如果把用户的密码MD5处理后再存储到数据库,其实是很不安全的。

因为用户的密码是比较短的,而且很多用户的密码都使用生日,手机号码,身份证号码,电话号码等等。或者使用常用的一些吉利的数字,或者某个英文单词。如果我把常用的密码先MD5处理,把数据存储起来,然后再跟你的MD5结果匹配,这时我就有可能得到明文。

比如某个MD5破解网站http://www.cmd5.com/default.aspx,所以现在大多数网站密码的策略是强制要求用户使用数字大小写字母的组合的方式提高用户密码的安全度。

以上是md5加密算法的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

MySQL中如何使用MD5加密 MySQL中如何使用MD5加密 May 28, 2023 pm 02:16 PM

什么是MD5?MD5信息摘要算法(英语:MD5Message-DigestAgorithm),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致。MD5由美国密码学家罗纳德·李维斯特(RonaldLinnRivest))设计,于1992年公开,用以取代MD4算法。这套算法的程序在RFC1321标准中被加以规范。1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他

PHP计算文件的 MD5 散列 PHP计算文件的 MD5 散列 Mar 21, 2024 pm 01:42 PM

这篇文章将为大家详细讲解有关PHP计算文件的MD5散列,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP计算文件的MD5散列MD5(MessageDigest5)是一种单向加密算法,可将任意长度的消息转换为固定长度的128位哈希值。它广泛用于确保文件完整性、验证数据真实性和创建数字签名。在PHP中计算文件的MD5散列php提供了多种方法来计算文件的MD5散列:使用md5_file()函数md5_file()函数直接计算文件的MD5哈希值,返回一个32个字符的

PHP计算字符串的 MD5 散列值 PHP计算字符串的 MD5 散列值 Mar 21, 2024 am 10:51 AM

这篇文章将为大家详细讲解有关PHP计算字符串的MD5散列值,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。PHP中计算字符串的MD5散列值引言MD5(消息摘要5)是一种流行的密码学哈希函数,用于生成固定长度的散列值,常用于保护数据完整性、验证文件完整性和创建数字签名。本文将指南php开发人员如何使用内置函数计算字符串的MD5散列值。md5()函数PHP提供了md5()函数来计算字符串的MD5散列值。该函数接收一个字符串参数并返回一个32个字符长度的16进制散列值

linux md5 工具是什么 linux md5 工具是什么 Jun 29, 2023 am 10:51 AM

linux md5工具是是一种用于计算和验证文件的MD5哈希值的工具,MD5是一种常用的哈希算法,用于生成唯一的、固定长度的哈希值,通常为128位,在Linux终端中使用md5sum命令,其语法为“md5sum <文件路径>”。

怎么使用Java计算修改文件的MD5值 怎么使用Java计算修改文件的MD5值 May 29, 2023 am 08:16 AM

什么是MD5?MD5(MessageDigestAlgorithm,信息摘要算法),一种被广泛使用的密码散列函数,可以产生出一个128位(16字节)的散列值(hashvalue),用于确保信息传输完整一致。它后面这个数字5是因为它是为了取代MD4而发明的。简单的理解,它的作用就是给文件一个唯一标识。如果我们修改了一个文件的扩展名,文件可能会打不开,但是对于MD5来说,并没有什么改变。所以对于一个文件,进行任何的重新命名对于md5校验都是没有用的。MD5的应用这里只提几点我见过的比较频繁的应用情况

Java双重MD5加密怎么实现安全登录 Java双重MD5加密怎么实现安全登录 May 17, 2023 pm 05:31 PM

一:问题引入对存储在数据库中的密码进行解密操作:可以看到成功将我的密码解密出来,这让我很吃惊,因为我们都知道MD5算法是不可逆的,因为它是其是一种散列函数,使用的是hash算法,在计算过程中原文的部分信息是丢失了的。那么为什么网站中可以将我的密码解密出来呢?经过一番查找后发现,原来在线解密工具的解密原理很简单,其原理是收集用户常用的简单密码形成了一个密码字典,并将字典中的密码用MD5加密后存储起来,在所谓的“解密“的时候,就将真正用户密码加密都的密文与已存储的密码相比较,如该密文存在于字典当中,

如何使用python实现md5加密 如何使用python实现md5加密 May 13, 2023 pm 08:04 PM

python实现MD5加密1、简介MessageDigestAlgorithmMD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用于确保信息传输完整一致。MD5是单向加密,指只能加密数据而不能解密数据,主要解决数据的完整性问题。摘要算法又称哈希算法、散列算法。它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示)。MD5是最常见的摘要算法,速度很快,可以将一个字符串,或文件,或压缩包,执行md5后,生成一个固定长度为128bit的串,通

java文件合并与修改md5值的问题怎么解决 java文件合并与修改md5值的问题怎么解决 May 10, 2023 pm 09:46 PM

文本文件合并运行效果:运行前:在这个路径下面有9个文件。运行后:产生了一个merge.txt文件文件内容展示代码部分这部分代码,功能很简单就是把一个个的文本文件合并后写入一个总的merge.txt文件夹,当时学会了往文件里追加内容,所以写了这个demo。简单来说就是获取每一个文件(文本文件,我进行了过滤。)得到一个输入流,然后一个循环内,每次将一个文件的信息写入合并的文件内,循环结束,文件合并就完成了。packagecom.filemerge;importjava.io.BufferedRead