首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP到没有给出相同的值

PHP到没有给出相同的值
EN

Stack Overflow用户
提问于 2022-01-19 08:39:37
回答 2查看 171关注 0票数 0

你好,我正在python上构建一个API,以创建一个用户并在数据库中插入密码。问题是应用程序是在Laravel上并使用bcrypt的。

例如,在"$2b$12$rsGZPtjctbI6bSGzS4P3mOSdrABnJuHfnKxEQwvm4KFu72BN3XNKK“中加密”#en1#1234$“,在PYTHON 中给出,而在PHP 中加密相同的E 211 "$2y$10$cO2nvRURLRdlW8j6CbWu8OeVlv7dyeozpBZcxVB2nd8hbyILyg7Xa”

当尝试与应用程序上的api创建的用户登录时,它不起作用。即使我用这个测试它不工作,输出也是无效的

代码语言:javascript
复制
$hash = '$2b$12$rsGZPtjctbI6bSGzS4P3mOSdrABnJuHfnKxEQwvm4KFu72BN3XNKK';

//validade hash in php
if(password_verify ( "test1234$%", $hash )){
  echo "valid";
} else {
  echo "invalid";
}

echo("\n".phpversion());

在python端使用了以下代码:

代码语言:javascript
复制
pip install bcrypt
代码语言:javascript
复制
 import bcrypt
 
 password = item.password
 bpassword = b"password"
 hashed = bcrypt.hashpw(bpassword, bcrypt.gensalt())

在PHP方面:

代码语言:javascript
复制
if (! function_exists('bcrypt')) {
    /**
     * Hash the given value against the bcrypt algorithm.
     *
     * @param  string  $value
     * @param  array  $options
     * @return string
     */
    function bcrypt($value, $options = [])
    {
        return app('hash')->driver('bcrypt')->make($value, $options);
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-01-20 11:38:41

我在我在PHP中称为bcrypt的Python中找到了一个使用子进程的解决方案

代码语言:javascript
复制
code = """echo password_hash("""'"'+item.password+'"'""",PASSWORD_BCRYPT);"""
    hashed_password = await myClass.php(code)
代码语言:javascript
复制
  async def php(self, code):
        p = subprocess.Popen(["php", "-r", code],
                            stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        out = p.communicate()
        if out[1] != b'': raise Exception(out[1].decode('UTF-8'))
        return out[0].decode('UTF-8')
票数 0
EN

Stack Overflow用户

发布于 2022-01-19 09:17:37

bcrypt每次运行时都使用不同的salt,这就是为什么它非常适合在数据库中存储密码.除非您强迫它每次使用相同的盐分,否则它将继续生成不同的结果散列。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70767536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档