Web Crypto API:如何将密码添加到私钥

Web Crypto API: how to add passphrase to private key

我们使用 window.crypto.subtle.generateKey 生成 RSA 密钥对。

我们如何使用 Web Crypto API 为私钥添加密码?

使用 WebCrypto 生成的密钥不受密码保护。

您可以导出密钥并构建支持加密的格式,例如 PEM 文件中的 pkcs8,但为此需要使用额外的库。

@pedrofb 是对的。如果你想这样做是好是坏 PKCS8 是正确的格式,这里有一个 link 代码可以用来创建这样一个包 - https://github.com/PeculiarVentures/PKI.js/blob/5b9c35c154c48b232b45cc2a908c88e2f56a8447/src/PKCS8ShroudedKeyBag.js

您可能还应该阅读以下内容:http://unmitigatedrisk.com/?p=543,其中描述了一些与 material.

钥匙包相关的概念

您可能还想研究在 service worker 中使用 webcrypto 并通过 PostMessage 公开接口以使操作发生。这与不可导出的密钥相结合,提供了一些防止任意使用密钥的保护,例如,攻击者只能执行接口允许的操作。

我来晚了一点,但 wrapKey() 不是您要找的吗?它在同一个 API 上,并允许您将密钥包装在受密码保护的形式中,例如pkcs8.