den*_*dog 5 javascript cryptography webcrypto-api
我正在成功使用webcrypto API加密服务器和客户端之间的消息(假设我需要手动执行此操作)。
我的问题是我需要检查用户和服务器的密钥对是否已经存在,而不是一直生成新的密钥对。有没有办法检查它是否存在并检索它以解密服务器消息?
为了明确起见,我privateKey在浏览器上,publicKey并被发送到服务器。
我有一个nodejs服务器和普通的JS前端。
提前致谢。
默认情况下,CryptoKeys不是持久性的。您需要将密钥存储在IndexedDB中,以使它们可用于下一次浏览器执行。
IndexedDB是安全的存储,可以在不暴露密钥材料的情况下存储,恢复和使用密钥
参见https://www.w3.org/TR/WebCryptoAPI/#concepts-key-storage
5.2。密钥存储
该规范未明确为CryptoKey对象提供任何新的存储机制。相反,通过允许将CryptoKey与结构化克隆算法一起使用,支持存储结构化可克隆对象的任何现有或将来的Web存储机制都可以用于存储CryptoKey对象。
在实践中,预计大多数作者将使用索引数据库API,该API允许关联存储键/值对,其中键是对应用程序有意义的某些字符串标识符,而值是CryptoKey对象。这样就可以存储和检索关键材料,而无需将该关键材料暴露给应用程序或JavaScript环境。
这里有一个完整的例子https://blog.engelke.com/2014/09/19/saving-cryptographic-keys-in-the-browser/
解决了:
您可以使用 IndexedDB 来存储CryptoKey对象。
我尝试了普通的旧本地存储,但它不起作用。
有关更多信息,请参阅: