javascript - javascript中的RSA加密和Java中的解密

标签 javascript encryption rsa bouncycastle jsencrypt

我有一个应用程序,前端为 HTML、Javascript,后端为 Java, 我需要使用 RSA 来发送密码和敏感信息。我在 javascript 中使用 JSEncrpt,在 java 中使用 Bouncy caSTLe。 我需要知道如何管理 key 。如果我在 javascript 中动态创建 key ,我如何将私钥发送到我的后端,反之亦然。我的 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

最佳答案

and for java code see example on : http://www.mysamplecode.com/2011/08/java-rsa-encrypt-string-using-bouncy.html

请注意,从可用性的 Angular 来看,这个例子是错误的。 RSA 本身旨在加密小块信息(例如对称加密的 key ),而不是任何更长/更大的数据。看看hybrid cryptosystem .当使用较旧的 PKCS1.5 填充时,加密数据需要具有高熵。所以 - 不要对数据本身使用 RSA,而是使用混合密码系统(大多数高级库都会这样做)。

I need double encryption

它增加了复杂性,但没有必要的安全性。

仅当您打算存储或重新发送加密数据时,才需要在 TLS (https) 之外加密数据。也许您会这样做,只是我们看不到任何理由。

问题是 - RSA 旨在确保数据的完整性和 secret 性。 TLS(基于 RSA 或椭圆曲线)也可以防止 MIM(中间人)攻击。如果您随机生成 key 而不检查验证身份的可能性(使用证书颁发机构),则 MIM(在 TLS 之后)是可行的。

I need to know how can I manage keys. If I create keys dynamically in javascript how can I send private key to my backend or vice-versa.

在非对称加密 (RSA) 中,发件人只需要目标的公钥来加密数据。为了确保安全,目标需要发件人的公钥来验证签名(如果消息已签名)

基本上,您可以生成随机(对称)加密 key 并使用 RSA 加密该 key 。然后客户端可以将 IV(salt,与对称加密一起使用)、RSA 加密的对称 key 、加密数据(使用对称加密 key )和 MAC(消息认证码 - 哈希和签名)发送到另一端。

关于javascript - javascript中的RSA加密和Java中的解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51492213/

相关文章:

javascript - 如何将面添加到 THREE.BufferGeometry?

java - 在 Android/Java 中 cipher.doFinal 中传递什么?

java - RSA加密: Encrypt in android/java,在python中解密(密码学)

javascript - 定制财年-Moment Js

javascript - 如何使用 jquery 和 ajax 读取、解析和显示 xml

javascript - 如何从 javascript 调用 codenameone java 类方法?

java - 如何在服务器和 GWT 客户端之间使用 RSA?

c# - 在代码中访问 WebResource.axd 文件内容时出现问题

ssh - 从 SSH 服务器获取公钥

javascript - 如何使用 cryptico.js 生成的 PHP 签名进行验证