Articles of 哈希

Webpack – 将哈希包的URL插入静态哈巴狗模板

即时通讯使用webpack pug-html-loader +文件加载器来生成一堆静态帕格模板。 我也想开始添加哈希包的文件名,但我不能解决如何将哈希文件名插入我所有的哈巴狗模板 这是如何引用我的包当前在所有的哈巴狗模板: script(src="bundle.js") link(href="bundle.css") 我怎么修改引用bundle-[chunkhash].js / bundle-[chunkhash].css] – 我需要传递一些variables到我的webpack.config.js中的pug-html-loader吗? 注意使用extract-text-plugin将我的SASS输出到.css包文件

比较两个密码哈希值 – nodejs

我正在使用encryptionhttps://nodejs.org/api/crypto.html进行密码encryption和身份validation。 我正在更改密码页面上工作,并且在确定用户提供的密码是否与现有密码具有相同的哈希值时遇到问题。 以下是我的代码。 var createSalt = function createSalt() { return crypto.randomBytes(128).toString('base64'); }; var hashPwd = function hashPwd(salt, pwd) { var hmac = crypto.createHmac('sha256', salt); return hmac.update(pwd).digest('hex'); }; //use password , create salt, hash and compare with the existing var salt = createSalt(); var passHash = hashPwd(salt,data.Password); console.log('the password is', user.PassHash === passHash); 我期待如果上面的控制台消息打印真正的现有用户密码匹配。 但是,这两个哈希似乎并不匹配。 请问我错过了什么? […]

WooCommerce的SHA256 webhook签名从不validation

我正在从woocommerce网站接收webshook到一个nodejs / express应用程序。 我试图validationwebhook的签名来certificate真实性,但是我计算的散列绝对不会与woocommerce在签名头中报告的签名相对应。 这是我用来validation真实性的代码: function verifySignature(signature, payload, key){ var computedSignature = crypto.createHmac("sha256", key).update(payload).digest('base64'); debug('computed signature: %s', computedSignature); return computedSignature === signature; } 这个函数被调用了以下参数: var signature = req.headers['x-wc-webhook-signature']; verifySignature(signature, JSON.stringify(req.body), config.wooCommence.accounts.api[config.env].webhookSecret) webhook的签名报头将签名报告为BewIV/zZMbmuJkHaUwaQxjX8yR6jRktPZQN9j2+67Oo= 。 但是,上述操作的结果是S34YqftH1R8F4uH4Ya2BSM1rn0H9NiqEA2Nr7W1CWZs= 我已经手动configuration了webhook上的秘密,正如你在上面的代码中看到的,这个秘密在快速应用程序中也是硬编码的。 所以要么是我错误的有效载荷来计算签名,要么是有其他的东西让我无法validation这些签名。 将不胜感激任何指针来帮助我解决这个问题。

我如何使用Passport.js返回到当前散列位置?

我使用Passport.js通过OAuth与Google进行身份validation(我正在使用passport-google-oauth策略)。 它工作正常,但我目前redirect到“/”,我想发送他们到“/”加上当前的哈希标签。 我可以在一个查询string参数中发送散列值,但我似乎无法将该值设置为我传递进行身份validation的对象的callbackURL属性。 有人可以提供一个例子或解释正确的方法来做到这一点? 我并不赞成使用查询string,它似乎是最直接的路线,但我打开使用会话variables或其他东西,如果这将是更容易或更好的做法。 谢谢。

为什么crypto.createHash在新版本中返回不同的输出?

问题 我有使用crypto.createHash生成md5散列的node.js模块。 最近我注意到crypto模块生成的hash在新版本中是不同的: 码 require('crypto').createHash('md5').update('¥').digest('hex') Node.js v0.10.0 输出: ab3af8566ddd20d7efc9b314abe90755 Node.js v6.1.0 输出: 07625e142e4ac5961de57472657a88c1 题 我想知道是什么原因,在新版本,我该如何解决这个问题? 更新 GitHub上的类似问题: https://github.com/nodejs/node/issues/6813 https://github.com/node-xmpp/client/issues/206

密码哈希+盐如何工作

我虽然我理解哈希和腌制密码,但似乎我有一些误解。 我正在为nodejs中的我的网站创build一个用户帐户系统。 我理解的方式是,当用户创build一个密码时,我们生成一个随机salt,将其附加到密码,然后散列该string。 我们还可以添加一个工作因子,使哈希缓慢工作,并防范蛮力攻击。 我们将salt和散列一起存储在我们的数据库中,并validation一个login尝试,我们用储存的salt和密码尝试重复上述过程(在服务器上),并检查哈希是否匹配。 似乎nodejs中的bcrypt模块与我对散列的解释不一致。 这是来自http://codetheory.in/using-the-node-js-bcrypt-module-to-hash-and-safely-store-passwords/上的一个例子 var salt = bcrypt.genSaltSync(10); var hash = bcrypt.hashSync("my password", salt); 首先,为什么工作因素适用于盐而不是哈希? 如果有人用暴力攻击,他们会运行哈希函数是否正确? 哈希函数是不是我们需要慢一点? 我也对bcryptvalidation感到困惑: bcrypt.compareSync("my password", hash); 即使两个用户select相同的密码,我们也需要哈希值是独一无二的,这是否是盐点? 那么为什么我们不这样做呢? bcrypt.compareSync("my password"+salt, hash);

如何可靠地哈希JavaScript对象?

有没有一种可靠的方法来JSON.stringify一个JavaScript对象,保证所有的浏览器,node.js等ceated JSONstring是相同的,因为Javascript对象是相同的? 我想散列JS对象 { signed_data: object_to_sign, signature: md5(JSON.stringify(object_to_sign) + secret_code) } 并通过Web应用程序(例如Python和node.js)和用户传递它们,以便用户可以针对一个服务进行身份validation,并显示该服务的下一个服务“签名数据”以检查数据是否可信。 但是,我发现JSON.stringify在实现中并不是唯一的: 在node.js / V8中,JSON.stringify返回一个没有不必要空白的JSONstring,比如'{“user_id”:3}。 Python的simplejson.dumps留下一些空白,例如'{“user_id”:3}' 也许其他stringify实现可能会与空白,属性的顺序或任何其他方式不同。 有一个可靠的跨平台串化方法吗? 有没有“正规化的JSON”? 你会推荐其他的方法来散列这样的对象吗? 更新: 这是我用作解决方法: normalised_json_data = JSON.stringify(object_to_sign) { signed_data: normalised_json_data, signature: md5(normalised_json_data + secret_code) } 所以在这个方法中,不是对象本身,而是它的JSON表示(这是特定于信号平台)被签名。 这很好,因为我现在签名是一个明确的string,我可以轻松JSON.parse数据后,我已经检查了签名散列。 这里的缺点是,如果我将整个{signed_data,signature}对象作为JSON发送,我必须调用JSON.parse两次,看起来并不好,因为内部的一个会被转义: {"signature": "1c3763890298f5711c8b2ea4eb4c8833", "signed_data": "{\"user_id\":5}"}