PHP MD5性能=是否需要处理器?

PHP MD5性能=是否需要处理器?,php,md5,Php,Md5,md5()通常用于密码和短字符串 但这次我想加密(不需要解密)一个大字符串,就像整篇文章一样。。。(更不用说我需要每隔几秒钟做一次) 这会是个问题吗?或者,md5是一个大字符串还是一个短密码需要处理器更多的工作/更长的时间 我读到md5真的很快 对于那些好奇的人,我正在尝试生成所讨论字符串的“签名”哦,亲爱的 嗯,MD5不是 (根据定义,加密设计为可逆的。) 不要将MD5或SHA用于密码哈希-它们太快了(对于这样的任务,MD5显然是不可靠的。) 散列算法(包括MD5)所花费的时间与输入的大小成比

md5()通常用于密码和短字符串

但这次我想加密(不需要解密)一个大字符串,就像整篇文章一样。。。(更不用说我需要每隔几秒钟做一次)

这会是个问题吗?或者,md5是一个大字符串还是一个短密码需要处理器更多的工作/更长的时间

我读到md5真的很快

对于那些好奇的人,我正在尝试生成所讨论字符串的“签名”

哦,亲爱的

  • 嗯,MD5不是 (根据定义,加密设计为可逆的。)

  • 不要将MD5或SHA用于密码哈希-它们太快了
    (对于这样的任务,MD5显然是不可靠的。)

  • 散列算法(包括MD5)所花费的时间与输入的大小成比例,即O(n)。这意味着,100MB的哈希需要“两倍于50MB的时间”。对于内存中的PHP字符串,这将是“眨眼之间”(因为I/O很可能是瓶颈)——您需要在真实环境中对真实数据运行性能基准测试,以对其进行量化

    MD5确实“非常非常快”;该算法相对简单,并且与许多散列算法一样,被设计为快速算法。在出现真正的性能问题之前,不要担心性能—现代CPU速度非常快。此外,虽然MD5(和SHA)速度很快,但在无限循环中背靠背地运行MD5当然会“吃掉”所有CPU;如果有工作要做,空闲的CPU就是浪费的CPU


    然而,考虑到一个“一般”签名散列,它只是稍微慢一点(由一个常数因子),但它是一个更好的算法,即使当修剪到相同的输出空间,并且可能在将来防止问题。

    不,MD5不是CPU密集型的。这就是为什么现在对密码哈希来说它是一个无用的选择。它被设计成快速/轻巧。是的,md5的运行时间与输入的大小成正比。感谢您的输入。。只是为了好玩的辩论,我相信mD5也是标准定义的加密。。通常也称为单向加密:P更严肃地说,你能详细说明你的观点吗?我不太明白你在这件事上的意思。。。好的,现在我正在使用Md5。。不管怎么说,这只是几kb的数据(罕见情况下最多200kb)。@BrownChiLD不。这不是一场辩论,甚至不是一场有趣的辩论。然而,散列(在所有输入上)既不是可逆函数,也不是可逆函数,因此不是加密。@BrownChiLD至于第2点,有大量的资源表明:“即使是
    SHA2256(salt)的“好”散列方案∥ 密码)
    仍然完全容易受到这些廉价有效的攻击,因此像bcrypt这样的自适应哈希算法的重要性。”(请注意,这篇文章已经有4年的历史了——从那时起,计算机/GPU的速度只会快得多。)@BrownChiLD tl;dr:我建议使用SHA来满足一般(而不是密码)签名散列的需要。。好吧,你赢了:)。。关于其余的建议,非常感谢。。这是很有见地的。。虽然md5/sha不是很好的密码散列,但这完全取决于您所追求的安全级别。。就我个人而言,我从来没有找到加强密码散列的理由,因为面对现实,它可能不是防弹的,但已经足够了。总会有更安全的东西。。。。我认为,执行是关键。