繁体   English   中英

寻求有关 JavaScript RSA 加密的建议

[英]Looking for advice on JavaScript RSA encryption

我需要加密用户在客户端表单上输入的数据。 我的环境没有 ssl 加密,但我发现在我的情况下,我可以通过 RSA 加密获得类似的结果。 公钥将在客户端使用,私钥的所有者稍后将能够检索和解密数据。

在我走这条路之前,我想确保我没有忽视任何关键问题。 所以这里有几个问题:

  • 你能推荐做 RSA 加密的 JavaScript 库吗?
  • 什么保证它们是可靠的?
  • 这种技术的缺点是什么? 例如,如果用户关闭浏览器太快会丢失消息?

一般来说,我会对有关这种 JavaScript RSA 加密技术的任何建议感兴趣。

更新:到目前为止,我发现的唯一 RSA JavaScript 是在此页面上: http : //www.ohdave.com/rsa/对此有任何反馈吗?

另外,如果您有任何推荐,我可以使用 RSA 以外的加密。 我的限制是要有一个 100% 的 JavaScript 解决方案。

这是可能的,但是应该指出,这绝不是 TLS 的替代品——主要是因为像这样的技术在客户端和服务器之间没有提供可强制执行的信任或身份验证; 您的脚本无法验证其中嵌入的公钥是您的公钥,任何可以进入您和您的客户之间的人都可以替换他们自己的。

https://sourceforge.net/projects/pidcrypt/似乎越来越受欢迎。 我正在评估它以在我们的项目中使用。 如果我设法使用这个库,将发布更新。

看看asmcrypto.js — 已经实现了很多加密算法,包括 RSA,而且它真的非常

顺便说一句,我是一名作者,很高兴得到一些反馈并回答您的问题(如果有的话)。

如果您的 javascript 环境是安全的(例如 https)并且您不需要支持旧浏览器版本,可以使用Subtle.Crypto来创建良好的安全模型。 您需要很好地了解您在做什么以及如何在您的环境中实现加密、签名、密钥存储等。 自己动手有很多陷阱。

一个好的起点是考虑是否需要分发单独的 AES 密钥以进行快速和安全的加密。 如果是这样,那么您可能希望使用 RSA 来加密和传输单个 AES 密钥,然后使用 AES 进行大量加密。 记住要签字。 在许多情况下,只需对有效负载进行签名,以便验证其完好无损就足够了。 可能没有必要隐藏静态或传输中的数据。

https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto

简单的轻量级 javascript 库 crypto4js 已经实现了 RSA 加密。 你可以使用它https://github.com/atul19971/crypto4js

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM