【问题标题】:Is there a JavaScript equivalent to php's password_verify?是否有与 php 的 password_verify 等效的 JavaScript?
【发布时间】:2021-03-19 13:08:10
【问题描述】:

我想做的是一个小型的本地网络应用程序,它将笔记存储在 localStorage 中。 我想对密码进行哈希处理,在php中这将是password_hash(),并将其放入localStorage。

登录时,我会使用 php 的 password_verify() 之类的东西检索并检查它 - 但在 JS 中!

有这样的吗?

我不使用 node.js(甚至不是真正的服务器架构),而是在客户端使用 crypto.js

【问题讨论】:

  • 你使用nodejs吗?
  • 您想在浏览器中进行密码散列和存储客户端?!您能画出更大的图景吗? 跨度>
  • @Alex 不,我没有
  • 我想使用用户密码来加密数据。此外,用户应该以巨魔身份登录,才能解密数据

标签: javascript hash cryptography cryptojs


【解决方案1】:

JavaScript 本身没有内置任何内容,但 Web 平台提供了 Web Crypto API(specMDN)。通过引用SubtleCrypto 实例的Crypto.subtle 属性,您想要的部分仅在secure contexts 中可用(例如,使用https 或本地提供的页面)。它通过digest method等提供散列。


您可能知道这一点,但将笔记和散列密码存储在浏览器的本地存储中不太可能保证它们的安全。我不会存储散列密码,而是使用用户提供的密码(或类似的密码)加密笔记,而不是存储密码的散列。 (Crypto.subtle 对象具有 encryptdecrypt 方法。)然后只能通过提供正确密码(或者,当然,破坏加密)来解密笔记。

注意 MDN 页面上与此 API 相关的警告。很容易出错。

【讨论】:

    【解决方案2】:

    如果你使用节点,有两种解决方案

    • 密码哈希
    • bcrypt

    密码哈希

    安装它

    npm install password-hash
    

    例子

    var passwordHash = require('password-hash');
    
        var hashedPassword = passwordHash.generate('password123');
    
        console.log(hashedPassword); // sha1$3I7HRwy7$cbfdac6008f9cab4083784cbd1874f76618d2a97
    

    【讨论】:

      猜你喜欢
      • 2017-02-14
      • 1970-01-01
      • 2011-03-03
      • 2012-04-26
      • 1970-01-01
      • 1970-01-01
      • 2010-12-14
      • 2015-01-18
      • 2012-04-06
      相关资源
      最近更新 更多