是否可以使用 MD5 来获取可选大小为128/256/512/1024/2048位的校验和?
Digest::MD5
模块允许使用RSA MD5消息摘要算法,该算法将任意长度的消息作为输入,并生成 128位指纹作为输出。
如何使用MD5生成更大指纹?
答案 0 :(得分:3)
MD5 by definition仅产生128位哈希值。
因此,您需要使用不同的哈希函数(例如,SHA-2哈希函数系列输出值最多为512 bits)或将数据分成几部分并对其进行哈希处理,之后结合哈希。
如果您可以提供有关您尝试实现的内容的更多详细信息,那么可以更轻松地提供更具体的建议。
答案 1 :(得分:3)
您无法创建该大小的MD5哈希。通常,安全散列函数已针对特定大小设计。它们具有一定大小的内部状态。
当然,您可以使用MD5创建随机字节流;只需获取前一个值并再次哈希,并继续追加结果。当然,结果的总安全性不会比数据上的原始哈希值更强。经过一段时间后,哈希值会变弱,因为每次哈希后会丢失少量的熵(这需要很长时间)。
目前你可以使用的最好的哈希函数是SHA-512,虽然它会被相同大小的SHA-3慢慢取代(但在编写时尚未标准化)。这些哈希值提供了足够的安全性,因此如果您需要更多数据,您可以简单地使用填充方法。
想到的填充方法是:
如上所述,它取决于哪个应用程序最好使用。如果您不知道自己在做什么(例如看起来像),不要使用MD5 。它对于一般用途来说太破碎了,而且没有足够大的状态或输出。
答案 2 :(得分:1)
不,不是。请参阅cPAN documentation:
# Functional style
use Digest::MD5 qw(md5 md5_hex md5_base64);
$digest = md5($data);
$digest = md5_hex($data);
$digest = md5_base64($data);
Digest :: MD5模块允许您在Perl程序中使用RSA Data Security Inc. MD5消息摘要算法。该算法将任意长度的消息作为输入,并将输出产生输入的128位“指纹”或“消息摘要”。
请注意,MD5算法不像以前那么强大。自2005年以来,它很容易生成产生相同MD5摘要的不同消息。生成给定摘要的消息似乎仍然难以生成,但对于依赖摘要来唯一标识消息的应用程序而言,移动到更强大的算法可能是明智的。