gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 16:02:05 25 4
gpt4 key购买 nike

我有一个应用程序,前端为 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com