发布网友 发布时间:2022-06-28 19:30
共2个回答
热心网友 时间:2023-10-10 06:57
理解很简单,所有字符串集合A的Size是无穷的,所有MD5的集合B的Size是2^128(因为MD5是128位的),从一个无限集合A映射到有限集合B,那必然存在A的一个无穷子集A1,使得A1的所有元素(字符串)在B中映射到同一个元素,即存在无穷多个字符串,它们的MD5值相同。假设你用一种方法,找到了一组映射,这组映射中包含所有B中的元素,那么当随意给定一个MD5值的时候,你可以通过这组映射找到是哪个字符串生成的,这个时候你是不是说MD5可以逆转了呢?还不是,因为你不知道是不是还有其他字符串的MD5也是这个值。上面的方法已经在实际生活中使用,就是MD5暴力破解库(当然,这个库远远没有覆盖所有的MD5,而是网络上各种常用密码的MD5库)。
热心网友 时间:2023-10-10 06:58
MD5作为一种校验手段而不是加密手段。在内容字节长度小于MD5值的字节长度,是可逆的,但存在重复的可能。由于概率较低,且基于加密前内容一般可识读,所以你懂的为毛有那么多md5解密的网站,但是又有人说md5绝对不可逆。首先md5不是加密,只是根据已有数据生成特征值,用于签名,完整性检查。好的散列算法要求a到b容易,但找到能生成b的数据难;a变动一点点,b完全不一样。md5 是单向函数,所以他是不可逆的,有人说,为什么网上能解密?那并不是真正意思的解密,而是采用暴力破解的方式去猜测这个密码。