标题说明了一切。据我了解,每个文件都有一个唯一的 MD5 校验和。是否可以从总和中对文件进行逆向工程?
例如,假设一个视频的总和是 5。我知道,但这只是一个例子。你能写一个程序,输入 5 并生成一个视频吗?
换句话说,不是从文件中生成总和,而是从总和中获取文件。
标题说明了一切。据我了解,每个文件都有一个唯一的 MD5 校验和。是否可以从总和中对文件进行逆向工程?
例如,假设一个视频的总和是 5。我知道,但这只是一个例子。你能写一个程序,输入 5 并生成一个视频吗?
换句话说,不是从文件中生成总和,而是从总和中获取文件。
不,这是一种方法——否则就是一种很好的压缩方法!
为了扩展 Jim W 所说的,任何散列函数都是单向的,这意味着它们是不需要容易可逆的函数——虽然有些可能有逆,但大多数没有。
MD5 是一种加密散列函数,这意味着它被有意设计为非常难以逆转。特别是 MD5 相对较弱,有一些漏洞可以很容易地发现冲突——两个文件具有相同的 MD5 哈希值。
由于 MD5 哈希只有 128 位,因此有 2^128 种不同的可能 MD5 哈希,虽然这是一个非常大的数字,但仍然比世界上的文件多得多(实际上可能是无限的),所以有些文件不可避免地会散列到相同的值。正如 user2864740 在评论中指出的那样,这被称为鸽巢原理。
强大的加密哈希函数(如 SHA-256)被认为在计算上无法可靠地找到此类冲突。