是否可以使用MD5来获取可选大小为 128/256/512/1024/2048 位的校验和?
该Digest::MD5
模块允许使用 RSA MD5 消息摘要算法,该算法将任意长度的消息作为输入,并生成128 位指纹作为输出。
如何使用 MD5 产生更大的指纹?
是否可以使用MD5来获取可选大小为 128/256/512/1024/2048 位的校验和?
该Digest::MD5
模块允许使用 RSA MD5 消息摘要算法,该算法将任意长度的消息作为输入,并生成128 位指纹作为输出。
如何使用 MD5 产生更大的指纹?
您无法创建该大小的 MD5 哈希。通常,安全散列函数是针对特定大小设计的。它们具有一定大小的内部状态。
当然,你可以使用 MD5 创建一个随机的字节流;只需取上一个值并再次散列,并继续附加结果。当然,结果的总体安全性不会比数据上的原始哈希值强。一段时间后,哈希值会变弱,因为每次哈希后都会丢失少量的熵(不过这需要很长时间)。
目前,您可以使用的最佳哈希函数是 SHA-512,尽管它会慢慢被相同大小的 SHA-3 取代(但在撰写本文时尚未标准化)。这些哈希值提供了足够的安全性,因此如果您需要更多数据,您可以简单地使用填充方法。
想到的填充方法是:
As said, it depends on the application which one is the best to use. If you don't know what you are doing (such as it seems), don't use MD5. It's too broken for general use, and it does not have a big enough state or output.
不它不是。请参阅cPAN 文档:
# 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 Message Digest 算法。该算法将任意长度的消息作为输入,并生成输入的 128 位“指纹”或“消息摘要”作为输出。
请注意,MD5 算法不像以前那么强大。自 2005 年以来,很容易生成产生相同 MD5 摘要的不同消息。生成产生给定摘要的消息似乎仍然很困难,但是对于依赖摘要来唯一标识消息的应用程序,转向更强大的算法可能是明智的。