【问题标题】:SubtleCrypto.digest() fails for SHA-1 in Microsoft EdgeMicrosoft Edge 中的 SHA-1 的 SubtleCrypto.digest() 失败
【发布时间】:2018-02-27 21:23:15
【问题描述】:

我正在尝试使用 Web Crypto API 生成字符串的 SHA-1 哈希。我用来执行此操作的代码几乎是MDN SubtleCrypto.digest() page 中的第二个示例。

async function getHash(value, algorithm = 'SHA-1') {
  let msgBuffer = new TextEncoder('utf-8').encode(value);
  let hashBuffer = await crypto.subtle.digest(algorithm, msgBuffer);
  let hashArray = Array.from(new Uint8Array(hashBuffer));
  return hashArray.map(b => ('00' + b.toString(16)).slice(-2)).join('');
}

请参阅this JSFiddle 以获取演示。

我也在 E​​dge 中使用 this TextEncoder Polyfill。它在 Firefox 和 Chrome 中运行良好,但在 Microsoft Edge 中我只收到错误消息“SHA-1”。

我找不到有关此错误的任何信息。有人知道出了什么问题吗?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: microsoft-edge sha1 webcrypto-api


    【解决方案1】:

    “Edge 不支持 SHA1”,试试https://github.com/PeculiarVentures/webcrypto-liner

    【讨论】:

    • 我是 webcrypto-liner 的作者,Henry 是对的,Edge 不支持 SHA1,它已被弃用 blogs.technet.microsoft.com/yurikasensei/2016/11/29/…。 Liner 旨在解决这个问题和其他相关的互操作问题。如果不需要与旧系统互操作,您应该真正考虑使用 SHA-256。
    • 我正在与“我已被 pwned”api 交互,所以这并不取决于我。 webcrypto-liner 的自述文件列出了 SHA-1, and SHA-224 用于散列。那么是否没有 SHA-256 和 SHA-512 支持?
    • webcrypto-liner README 中有错误。它支持 SHA-1、SHA-256 和 SHA-512。 github.com/PeculiarVentures/webcrypto-liner/blob/master/src/sha/…
    猜你喜欢
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-07
    • 2018-11-29
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    相关资源
    最近更新 更多