【发布时间】:2018-02-27 10:20:48
【问题描述】:
我想用javascript生成一个公钥/私钥对,用公钥加密消息,用私钥解密消息。
我更喜欢原生浏览器支持而不是外部库。 如何在 JavaScript 中做到这一点?
现代浏览器实现window.crypto.subtle.generateKey。
我可以使用它来生成 ECDSA 私钥/公钥来签名/验证消息,这很有效。但是我找不到如何使用它来生成 pub/private 密钥来加密/解密的方法。如果我尝试使用推荐的 AES-GCM 算法的 generateKey,它只会生成一个 cryptoKey,它可能用于加密和解密。但我更喜欢获得一个密钥对(publib/private 密钥),而不仅仅是一个密钥。有什么建议吗?
此表列出了当前支持的方法,但似乎没有一个绿色算法是我需要的: https://diafygi.github.io/webcrypto-examples/
【问题讨论】:
-
既然 JavaScript 在用户的浏览器中运行,这怎么可能是安全的呢?任何调试器都可以很容易地隔离您的私钥,从而否定加密的全部目的。我的建议是将私钥端托管在 php 或 asp 或其他服务器端进程中,因此用户无法浏览代码。
-
当然可以,但我的问题是绿色标记的算法都没有生成私钥。
-
@Jim 有时目标是将密钥与服务器隔离(即为用户提供端到端加密)。它的实用性是一罐蠕虫。
-
AES 不是 symmetric-key algorithm 吗?我只希望它只产生一个私有密钥。您需要使用不同的算法来生成公共/私有对。
标签: javascript encryption