【问题标题】:What is difference between CRYPT() and MD5()?CRYPT() 和 MD5() 有什么区别?
【发布时间】:2019-03-02 02:27:47
【问题描述】:

当我们使用任何变量的 CRYPT() 方法时。

$test = 'password';

echo CRYPT($test);

结果

$1$g9s9ZdtF$sBBiBc4PdljOL4sDLx4CK.

当我们使用同一变量的 MD5() 方法时。

$test = 'password';

echo MD5($test);

结果

5f4dcc3b5aa765d61d8327deb882cf99

现在,这两个答案有什么区别?

【问题讨论】:

  • 它们只是两种不同的哈希算法。比较结果是没有意义的,因为它们并不打算给出相同的结果。
  • CRYPT 用于创建哈希并对其进行加盐处理,这意味着每次都会生成不同的哈希,而 MD5 是简单的哈希算法。 附言。今天MD5很不安全,用SHA256 OR SHA512
  • 既然你想哈希密码,你绝对应该使用password_hash()password_verify()函数。 MD5 和 SHA* 不应该用于哈希密码,因为它们太快了,因此很容易被暴力破解。

标签: php passwords md5 crypt cryptographic-hash-function


【解决方案1】:

crypt() 是一个从明文和(随机生成或提供的)盐值创建密码哈希的函数。它可以使用多种底层哈希算法,例如 DES、MD5、Blowfish 或 SHA。

使用“加盐”密码意味着相同的明文输入并不总是产生相同的哈希值。所以你不能说“我已经看到了这个散列之前它是'abc123'的散列”。

由于它在 libc 中可用,几乎所有编程语言和数据库服务器中都有 crypt() 函数,因此它非常具有互操作性。 它的安全程度仅取决于您选择的哈希算法(在哈希中指定)。

欲了解更多信息,请参阅https://en.wikipedia.org/wiki/Crypt_(C)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 2014-05-02
    • 1970-01-01
    • 2011-02-25
    • 1970-01-01
    • 2013-03-18
    • 2013-08-02
    相关资源
    最近更新 更多