2016-09-20 92 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