当前位置:  开发笔记 > 编程语言 > 正文

(PHP)如何正确实现crypt()

如何解决《(PHP)如何正确实现crypt()》经验,为你挑选了1个好方法。

以下是crypt()的PHP手册页中的示例:


为什么这样做?我认为这'mypassword'是我希望实际管理员使用的密码.所以我首先加密,并将其设置为等于$password.显然,我必须将其存储在DB中.但在接下来的行中,它被用作盐和我正在比较的东西,我不明白怎么crypt($user_input, $password)可能等于$password,如果在后一种情况下我理想的是正确的密码,$user_input但是$password被比较盐腌到$password.如果最后一行是,那对我来说会更有意义

if (crypt($user_input) == $password) {
   echo "Password verified!";
}

我不明白的是什么?



1> AndiDog..:

crypt是一个单向函数,并返回已包含salt的字符串.输出类似于存储的内容/etc/shadow.

来自php.net的示例:



result: $1$K2D8DGwq$b05uO37aMwO4rnDlB9Rsi1
result: $1$aPBvu2y.$213YVEs8/5m.jMCXSScly/
result: $1$dW3Xu2p6$nuCtJe2zzlgBMLxN2oZCx/

将用户输入与crypt结果进行比较时,该函数会自动从字符串中提取salt.


它完美地回答了你的问题.crypt()输出一个包含salt和hash结果的字符串.当你将该字符串作为salt传递时,它知道只提取salt部分并忽略散列部分.它仍然返回一个包含salt和hash的字符串.所以这些字符串可以直接比较.
推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有