最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

使用nodejs检查symfony,fos

运维笔记admin11浏览0评论

使用nodejs检查symfony,fos

使用nodejs检查symfony,fos

我需要从AWS Lambda函数验证Symfony 3.3 / FriendsOfSymfony UserBundle 1.3应用程序中的密码。

Symfony中的相关密码哈希码在这里是.php#L52

但是,即使在第一行,代码也不会产生相同的哈希值。

在使用password = test的Symfony中,salt = asLZCFQJ5flTtOWdphjKtpngthjK6h2FtMRSIZZ2bus

    $salted = $this->mergePasswordAndSalt($raw, $salt);
    $digest = hash($this->algorithm, $salted, true);

    //base64_encode($digest) == '2QhirHmPwt0O5MrtTdfWsWKCCeOQO/y02Di04/aUIJxWhdNDQSGCaUuL1ONLUasdsD88CBSIzGwsePqGTCcQmA=='

    // "stretch" hash
    for ($i = 1; $i < $this->iterations; ++$i) {
        $digest = hash($this->algorithm, $digest.$salted, true);
    }

在nodejs中有相同的细节,我得到:

    var pass='test';
    var salt='asLZCFQJ5flTtOWdphjKtpngthjK6h2FtMRSIZZ2bus';

    var salted = pass + '{' + salt + '}';

    var digest = sha512.update(salted).digest('binary');

    //new Buffer(digest).toString('base64') == 'w5kIYsKsecKPw4LDnQ7DpMOKw61Nw5fDlsKxYsKCCcOjwpA7w7zCtMOYOMK0w6PDtsKUIMKcVsKFw5NDQSHCgmlLwovDlMOjS1HCqx3CsD88CBTCiMOMbCx4w7rChkwnEMKY'
    for (var i = 1; i < 5000; ++i) {
        digest = require('crypto').createHash('sha512').update(digest + salted).digest('binary');

        process.stdout.write(new Buffer(digest).toString('base64')+"\n");
    }

或者这是一个字符编码问题?二进制散列的前3个字符在调试器中看起来非常相似。

PHPStorm的屏幕截图

WebStorm的屏幕截图

回答如下:

我已经通过将加密方法切换为bcrypt来解决这个问题。这个答案描述了如何检查生成的密码:https://stackoverflow/a/26643637/123594

与本文相关的文章

发布评论

评论列表(0)

  1. 暂无评论