Are there any one-way hashing functions available in native JavaScript?

前端 未结 4 1427
滥情空心
滥情空心 2020-12-13 09:39

I\'d like to be able to create unique tokens* for users based on a hashed string. I know I could, for example, use a md5() library but as the purpose is not cryptographic I

4条回答
  •  囚心锁ツ
    2020-12-13 09:40

    In 2020, there is a native API:

    SubtleCrypto.digest()

    https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest

    example:

    crypto.subtle
      .digest("SHA-256", new TextEncoder().encode("hello"))
      .then(console.log);
    

    hex string conversion:

    const digest = async ({ algorithm = "SHA-256", message }) =>
      Array.prototype.map
        .call(
          new Uint8Array(
            await crypto.subtle.digest(algorithm, new TextEncoder().encode(message))
          ),
          (x) => ("0" + x.toString(16)).slice(-2)
        )
        .join("");
    
    digest({message: "hello"}).then(console.log)

提交回复
热议问题