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

比较PHP和NodeJS之间的BCrypt哈希

运维笔记admin10浏览0评论

比较PHP和NodeJS之间的BCrypt哈希

比较PHP和NodeJS之间的BCrypt哈希

对于我正在开发的应用,nodejs需要验证PHP创建的哈希,反之亦然。

[问题是,在node.js中进行测试时,PHP中生成的哈希(通过Laravel的Hash类,仅使用PHP的password_hash函数返回false)。]

以下node.js脚本:

var bcrypt = require('bcrypt');

var password = 'password';

var phpGeneratedHash  = '$2y$10$jOTwkwLVn6OeA/843CyIHu67ib4RixMa/N/pTJVhOjTddvrG8ge5.';
var nodeGeneratedHash = '$2a$10$ZiBH5JtTDtXqDajO6f4EbeBIXGwtcGg2MGwr90xTH9ki34SV6rZhO';

console.log(
  bcryptpareSync(password, phpGeneratedHash)  ? 'PHP passed' : 'PHP failed',
  bcryptpareSync(password, nodeGeneratedHash) ? 'nodejs passed' : 'nodejs failed'
);

输出:'PHP失败的nodejs通过',而以下PHP脚本:

<?php

$password = 'password';

$phpGeneratedHash  = '$2y$10$jOTwkwLVn6OeA/843CyIHu67ib4RixMa/N/pTJVhOjTddvrG8ge5.';
$nodeGeneratedHash = '$2a$10$ZiBH5JtTDtXqDajO6f4EbeBIXGwtcGg2MGwr90xTH9ki34SV6rZhO';

print password_verify($password, $phpGeneratedHash)  ? 'PHP passed' : 'PHP failed';
print password_verify($password, $nodeGeneratedHash) ? 'nodejs passed' : 'nodejs failed';

输出'PHP通过的nodejs通过的输出。

我已经使用PHP 5.5.18,node.js v0.10.32和npm bcrypt模块在Ubuntu 14.04.1中运行了测试。

对于我正在开发的应用,nodejs需要验证PHP创建的哈希,反之亦然。问题是,PHP中生成的哈希值(通过Laravel的Hash类,该类仅使用PHP的password_hash ...

回答如下:

这会失败,因为从php和node生成的bcrypt哈希类型不同。 Laravel生成$2y$,而节点生成$2a$。但好消息是2a2y之间的唯一区别是它们的前缀。

发布评论

评论列表(0)

  1. 暂无评论