【发布时间】:2018-12-31 16:44:54
【问题描述】:
我有一个应用程序,其前端为 HTML、Javascript,后端为 Java, 我需要使用 RSA 发送密码和敏感信息。我在javascript中使用JSEncrpt,在java中使用Bouncy castle。 我需要知道如何管理密钥。如果我在 javascript 中动态创建密钥,我如何将私钥发送到我的后端,反之亦然。我的 javascript 代码对用户可见,在 javascript 中存储私钥不是一种选择。
Javascript 代码:
var text = "Hello World";
var privkey="MIICdQIB..........";
var pubkey="MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCvFZQtGLPQKV0h....";
var encrypt = new JSEncrypt();
encrypt.setPublicKey(pubkey);
var ciphertext = encrypt.encrypt(text);
console.log("ciphertext : " + base64ToHex(ciphertext));
var decrypt = new JSEncrypt();
decrypt.setPrivateKey(privkey);
var plaintext = decrypt.decrypt(hexToBase64(cipher));
console.log("plaintext : " + plaintext);
对于 java 代码,请参见 http://www.mysamplecode.com/2011/08/java-rsa-encrypt-string-using-bouncy.html 上的示例
【问题讨论】:
-
如果我在 javascript 中动态创建密钥,如何将私钥发送到我的后端,反之亦然 不要通过网络发送私钥。为什么不直接使用 SSL 加密通道来保护数据?
-
我需要双重加密,虽然我使用的是https,但仍然需要通过RSA算法进行双向通信。
-
好的,如果您需要双向加密,每个部分(前端、后端)都需要一对 RSA 密钥。在任何情况下都不需要将私钥发送给对方。消息用接收者的公钥加密,用私钥解密。要在客户端安全地存储生成的密钥对,您需要使用本机 WebCryptographyApi。该库允许在不暴露密钥材料的情况下生成和使用密钥
-
谢谢你会尝试使用它。
标签: javascript encryption rsa bouncycastle jsencrypt