×

md5加密算法 加密算法

md5加密算法(关于MD5加密算法密码验证问题)

admin admin 发表于2022-09-06 00:08:39 浏览222 评论0

抢沙发发表评论

本文目录

关于MD5加密算法密码验证问题


(恰恰我最近也在研究加密这块,

我们公司项目的RSA ASE MD5 SHA-1加密方案都是我写的。

直接拿我分享会上的稿子了)

先回答你的问题:

你的担心是正确的,

MD5加密的结果值A,是可以由两个不同的内容B和C得到的

即:期望的正确密码 a     a进行MD5加密的结果   0cc175b9c0f1b6a831c399e269772661

某人输入了错误的密码x,

x进行特殊的算法处理,是可以得到0cc175b9c0f1b6a831c399e269772661 这个MD5值的

————

但是你注意一点,错误的密码数据,必须是通过复杂算法得到,简单点称作“碰撞算法”。碰撞算法,其实可以看作是一种伪装算法,即,把错误的东西伪装成某个正确东西的MD5值。

至于“碰撞算法”的原理,可以从MD5加密的原理探知1、2,

MD5加密的过程有四步骤:

  1. 填充 2.初始化变量 3. 处理分组数据 4.输出结果

“碰撞算法”原理就是在前三步进行“大数据量样本的填充-试错-填充试错-直至得到期望的结果

破解过程中有三点是必须清晰的;

1.大量的正确密码的样本

2.采用碰撞算法

3.事先预知的,破解者期望的正确的结果

三者缺一不可

MD5“碰撞算法”的示例场景也是在 文件(比如数字签名)摘要加密上,

即,像密码学家演示的那样:

通过算法,可以得到相同MD5值的A和B  (A和B只是代指),这种算法2004年已经由中国的密码学家王小云实现。

但是回到题主担心的,

非法分子,事先并不知道  张无忌的账号——正确密码对应的MD5值,

他只能用“碰撞算法”去试,随便编一个假的密码,用“碰撞算法”去进行伪装填充-试错

但是试的过程就是无数次跟贵公司后台校验的过程,

在这个过程,贵公司后台应该做了用户当日最大错误密码次数处理。

所以理论上,不存在一个人,输入了错误的密码,登录成功的情况。

假设这个人每天能试5次,使用“碰撞算法”估计要算好几辈子了。

——

但是强调一下“MD5碰撞算法”的应用前提:

  1. 已知的明文以及明文对应的MD5值

  2. 根据1的条件,算法可以伪装出 另一个明文以及相同的MD5值

所以,不存在偶尔输错了一个密码,使用MD5加密,凑巧得到了正确密码的MD5值,这种情况不满足“碰撞算法”的条件和前提。

根本不可能。

安全性总结:

对于文件来说碰撞可能容易,但是对于限定长度的密码或者密文来说,MD5作为一种高性能高安全的数字签名算法来说,还是非常实用的

——

综上 MD5碰撞几个关注点

  1. 多数情况下,会产生不可视字符,而密码不可能存在不可视字符的.

  2. 生成“碰撞“的字符,能和你密码本身长度相等的.基本不可能.

基于上面两点.只要稍作点文章.就可以防止MD5碰撞了.

1.密码进行多次MD5加密
2.密码过滤不过视字符.
3.密码是定长的.例如:32个字符.用户不够的字符,用一固定字符如:空格补充.超长的.一律非法.

————

参考文章

【1】中国密码学家王小云2004年提交的破解MD5的算法

【2】碰撞算法原理分析

【3】产生MD5碰撞的新的充分条件集

【4】MD5碰撞


MD5加密算法破解


MD5算法是不可逆运算
每个数据通过加密成MD5后,在加密的服务器上,这组MD5值会对应这组数据,并自动存储。
如果你想知道MD5所对应的数据只有两种方法:
1,去CMD5网站上查,有的是付费的一般不会出现对应值,如果没付费,一般可以查到。
2,用穷举法,举出数据生成MD5值去对应,这种方法,不能实现,因为你不知道那个数据是什么,可以是文件,也可以是一组数。如果是一组数,还有可能会实现,不知道你要穷举到哪天了。。。
-md5加密算法

MD5加密和哈希算法是什么


MD5(Message-Digest Algorithm 5,信息-摘要算法 5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法、Hash算法),主流编程语言普遍已有MD5实现。将数据(如英文字符串,汉字,文件等)运算为另一固定长度值是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。  哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上是不可能的,所以数据的哈希值可以检验数据的完整性。
  哈希表是根据设定的哈希函数H(key)和处理冲突方法将一组关键字映象到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,所得存储位置称为哈希地址或散列地址。作为线性数据结构与表格和队列等相比,哈希表无疑是查找速度比较快的一种。
-加密算法

MD5密文解密


E10ADC3949BA59ABBE56E057F20F883E
解密后123456
D41D8CD98F00B204E9800998ECF8427E解密后空密码NULL
第三个
多了2位
-
-
解不出来
个性签名:
我的博客
www.52sky.org
-md5加密算法

md5加密算法


最后结果:OWJiODYzNGM3MDcxNDM0MQ==
MD5转换:9bb8634c70714341
BASE64转换:OWJiODYzNGM3MDcxNDM0MQ==
网站:http://www.cmd5.com
http://tool.admin5.com/tools/tools/base64.htm
-加密算法

MD5加密算法是什么呢


C.报文摘要
MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理,MD5的前身有MD2、MD3和MD4。
-md5加密算法

md5是什么


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

MD5由美国密码学家罗纳德·李维斯特(Ronald Linn Rivest)设计,于1992年公开,用以取代MD4算法。这套算法的程序在 RFC 1321 标准中被加以规范。

1996年后该算法被证实存在弱点,可以被加以破解,对于需要高度安全性的数据,专家一般建议改用其他算法,如SHA-2。2004年,证实MD5算法无法防止碰撞(collision),因此不适用于安全性认证,如SSL公开密钥认证或是数字签名等用途。-md5加密算法

用于密码管理

当我们需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露, 密码也很容易被破译。

为了增加安全性,有必要对数据库中需要保密的信息进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也不能得到原来的密码信息。MD5算法可以很好地解决这个问题,因为它可以将任意长度的输入串经过计算得到固定长度的输出,而且只有在明文相同的情况下。-加密算法

才能等到相同的密文,并且这个算法是不可逆的,即便得到了加密以后的密文,也不可能通过解密算法反算出明文。


MD5加密问题


MD5只是个散列算法,不是加密算法,MD5是无法复原的。
不同的值,经MD5运算过后,产生的结果可能是一样的。最简单的散列算法,就是取除以10的余数,1、11、21、31运算过后都等于1。
MD5值重复的概率是很小的,所以普遍用来检验文件是否被更改,所谓的加密也只能用来验证密码是否一致,是不可逆的,不可能将内容加密又解密出来的。
-md5加密算法

md5是常用的数据加密算法正确吗


不对,这只是一种信息摘要算法,就是从一段数据(不管其大小)中通过计算提取出摘要信息组成一个128位(16字节)的散列值,也就是说不管数据有多少,产生的都是一个固定长度的字串,所以不可能用于数据加密,主要用于验证数据传输的正确性(比如数据从A地传输前先计算其MD5值,传输到B地后再计算MD5值,两个值相同即表示传输是完全准确的),也可以用作密码数据的加密储存(但这里所谓的“加密”与通常理解的数据“加密”不是同一概念)。通俗来讲,MD5更像是指纹,通过在不同场合提取指纹进行比对,就可以知道两个人是否为同一个人。
-加密算法

谁能通俗易懂地讲讲MD5加密原理


MD5算法的原理可简要的叙述为:MD5码以512位分组来处理输入的信息,且每一分组又被划分为16个32位子分组,经过了一系列的处理后,算法的输出由四个32位分组组成,将这四个32位分组级联后将生成一个128位散列值。-md5加密算法

在MD5算法中,首先需要对信息进行填充,这个数据按位(bit)补充,要求最终的位数对512求模的结果为448。也就是说数据补位后,其位数长度只差64位(bit)就是512的整数倍。

即便是这个数据的位数对512求模的结果正好是448也必须进行补位。

补位的实现过程:首先在数据后补一个1 bit; 接着在后面补上一堆0 bit, 直到整个数据的位数对512求模的结果正好为448。总之,至少补1位,而最多可能补512位。

扩展资料

当需要保存某些密码信息以用于身份确认时,如果直接将密码信息以明码方式保存在数据库中,不使用任何保密措施,系统管理员就很容易能得到原来的密码信息,这些信息一旦泄露, 密码也很容易被破译。为了增加安全性,有必要对数据库中需要保密的信息进行加密,这样,即使有人得到了整个数据库,如果没有解密算法,也不能得到原来的密码信息。-加密算法

MD5算法可以很好地解决这个问题,因为它可以将任意长度的输入串经过计算得到固定长度的输出,而且只有在明文相同的情况下,才能等到相同的密文,并且这个算法是不可逆的,即便得到了加密以后的密文,也不可能通过解密算法反算出明文。-md5加密算法

这样就可以把用户的密码以MD5值(或类似的其它算法)的方式保存起来,用户注册的时候,系统是把用户输入的密码计算成 MD5 值,然后再去和系统中保存的 MD5 值进行比较,如果密文相同,就可以认定密码是正确的,否则密码错误。-加密算法

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

MD5 算法还可以作为一种电子签名的方法来使用,使用 MD5算法就可以为任何文件(不管其大小、格式、数量)产生一个独一无二的“数字指纹”,借助这个“数字指纹”,通过检查文件前后 MD5 值是否发生了改变,就可以知道源文件是否被改动。-md5加密算法