2016-09-20 65 views
0

我正在使用2台服务器。在php中加密数据并在javascript中解密

我想创建一对密钥并将私钥存储在本地存储中并将公钥发送到PHP服务器。

数据在JavaScript中

任何建议在PHP中的公共密钥和解密数据基本上加密..我该怎么办。

我已经尝试过一些事情,但结果不来像(公钥)http://phpseclib.sourceforge.net/rsa/examples.html#convert]和(私钥)https://github.com/travist/jsencrypt]

感谢。

更新:

目的:目的是从PHP服务器发送数据到客户端的安全。

更新编辑:

如何安全是保持私钥PHP代码,并给予公钥来对呼叫客户端(JavaScript的服务器的nod​​e.js)......像从node.js的服务器发送数据到PHP服务器....是没有https的安全吗?

或者如果我们使用https,那么我们不需要使用这个方法...... ??

感谢

+0

存储在浏览器中的私钥的localStorage听起来有点ü nconventional。如果您无论如何都控制服务器,那么为什么不使用客户端证书验证,当服务器实际上依赖SSL层来验证连接客户端是否有适当的证书来访问内容? –

+0

问题更新@VladimirM –

+0

通常,您有2个参与者:网络中的服务器和用户计算机上的浏览器。如果你正在发送一个密钥,这意味着任何听你的网络上的HTTP流量的人都会看到你的密钥) –

回答

2

如果你的目标是从PHP服务器发送数据到客户端的安全,那么可以考虑使用HTTPS。

你想要做的事情是非常难以得到正确的。如果您不使用HTTPS,那么它就毫无意义,因为您的访问者将无法知道他们正在与谁通话以及密钥生成和解密代码是否可信。如果您使用的是HTTPS,那么您已经安全地(使用私钥和公钥)从PHP服务器向客户端发送数据,并且再次加密它不会执行任何操作。

如果您试图保护浏览器中运行的其他JavaScript代码的秘密,它仍然不会执行任何操作,因为在浏览器中使用私钥,加密算法和加密的消息并不比安全地使用明文。

此外,在密钥生成,密钥分配,加密算法,处理加密的消息等方面存在着很大的空间,即使您可以做到所有这些都是正确的,您会得到什么最多是什么您已经拥有HTTPS。

并不认为这很容易 - 有良好意图的OpenSSL和经验丰富的开发人员可能是the number of CVE entries的世界纪录保持者,因为这些东西非常难以正确。

请务必阅读本经典文章:

另外值得一读:

+0

感谢您的答案..它是最好的..我已听到,直到现在.... –

+0

我有另一个问题你....保持私钥在php代码中,并给客户端(javascript服务器node.js)打电话时提供公共密钥的安全性...就像从node.js服务器发送数据到php服务器一样... 。没有https的安全性.... –

+0

@ManpreetOberoi如果没有https,那么密钥在传输过程中可能会发生更改,或者客户端不确定它是否与受信任的服务器通信。如果你自己做所有事情,那么很难让所有事情都变得安全。但是你可以使用https(使用https://letsencrypt.org/的免费证书),你可以使用ssh,你可以使用[ZeroMQ中的加密](http://hintjens.com/blog:49),你可以使用[加密RabbitMQ](https://www.rabbitmq.com/ssl.html),您可以使用加密的websocket通过https - 有一些可用的解决方案,您可以在这里使用。 – rsp