0

我想在客户端加密数据,Web 应用程序从用户本地计算机获取 .cer 文件。拍摄后,我将使用密钥加密数据,但我想图书馆或以任何方式读取我在互联网上搜索的 .cer 文件,但我没有找到任何图书馆。我使用公钥加密。

4

3 回答 3

2

很难理解您究竟为什么要读取这些密钥,但根据您想要实现的目标,您可以使用经过客户端身份验证的 TLS 握手,并且浏览器会为您处理这些密钥。如果您只需要在传输过程中加密一些数据,那么即使是简单的 TLS 握手对您来说也足够了。阅读JavaScript Cryptography Considered Harmful并确保您没有试图重新发明已经以更标准方式工作的东西。

于 2013-05-23T01:06:13.027 回答
1

出于浏览器安全原因,浏览器中的 Javascript 无法访问.cer本地用户计算机上的文件(或任何文件)。密钥(用于单个网站)可以存储在本地存储中并从那里访问。

您可能想重新考虑您真正想要做的事情。如果您使用 https 与您的服务器通信并且您的服务器具有适当的配置和安全凭证,那么您在浏览器和服务器之间的通信将在传输过程中自动受到公钥/私钥加密的保护。

于 2013-05-23T01:00:10.053 回答
0

为此,您需要突破作为用户浏览器的沙箱。执行此操作的“正常”方法是创建一个签名的小程序。用户需要在他的计算机上正确配置 Java,并且需要验证签名的小程序可以运行。然后这个小程序可以使用它的文件读取权限来访问用户计算机上的文件,JavaScript 可以使用小程序来读取证书(并执行加密)。

现在,虽然原则上这是可能的,但我真的,真的真的真的建议你不要走这条路。该建议来自确实实施了此类解决方案的人,并且非常确保其他项目不使用相同的解决方案。

您应该使用 TLS,可能像其他人建议的那样使用客户端身份验证。如果您愿意,您可以始终通过受信任的 TLS 传输发送公钥,并让您的 JavaScript 使用该密钥来加密数据。一般来说,虽然配置良好的 TLS 连接就足够了。

于 2013-05-23T23:12:38.760 回答