如何在浏览器端实现RSA公私钥对生成、加解密?
我找了很多实现RSA加解密的js库,基本都是需要先使用open-ssl命令生成RSA公私钥对。后来我使用Web Cryptography API,满足在浏览器端生成RSA公私钥对及加解密的需求。但是只能公钥加密、私钥解密,用私钥加密报错“Uncaught (in promise) DOMException: key.usages does not permit this operation”。有没有满足浏览器端生成公私钥对、公钥加密私钥解密和私钥加密公钥解密的解决方案?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
<!--弄了好几天,通过Html生成RSA的公钥和私钥,是在浏览器中生成RSA的公钥私钥,用户本地保存私钥,公钥发送服务器。比较可靠。代码贡献。如有问题 ,联系我QQ:3076688760-->
<html>
<head>
</head>
<body>
<input type="button" id="generate" value="generate keypair">
This is your PUBLIC key. Send it to sender and ask them to use encrypt.html to encrypt a message for you.
<textarea id="public" readonly onfocus="this.select();"></textarea>
This is your PRIVATE key. Do not send it to anyone! Instead, save it and use decrypt.html to decrypt an encrypted message.
<textarea id="private" readonly onfocus="this.select();"></textarea>
Note: These two keys form a pair: messages encrypted with above public key can be decrypted only with above private key.
<script>
</script>
</body>
</html>
可以参考mail.qq.com里面对password的加密
单纯的在浏览器做的话,DES不是同样能满足需求?因为RSA公私钥的一般的使用场景都是两端进行的,所以基本都是优先生成出来。私钥会下发给客户端或者其他方,比如接银行等都是类似的做法,不太清楚题主为何会有在浏览器做整个加解密的过程?而且还需要浏览器生成密钥对的需求。如果单纯需要浏览器进行加密敏感数据使用DES加密也足够了,因为你这样使用起来也没有利用到RSA非对称的特性,生成的私钥和公钥也都在一处进行使用。
问题应该是说:前端生成一组密钥对 后端生成一组密钥对 然后进行相互验证