我剛開始開發一個需要與服務器/數據庫通信的android-app。在服務器端,我使用PHP來收集數據或執行查詢。我讀了很多關於安全性(XSS,SQL注入等)的內容。因爲我也想加密在客戶端&服務器之間發送的數據,我開始在PHP中處理openssl函數。與openssl_seal&openssl_open(都是PHP)公有私鑰加密的Android對應方是什麼?
openssl_seal-和openssl_open函數似乎很適合這個用途。 我寫這兩個功能:
function encryptRnd($data) {
$pubKey = file_get_contents("public.key");
$publicKeys = array(openssl_pkey_get_public($pubKey));
$res = openssl_seal($data, $encryptedData, $encryptedKeys, $publicKeys);
return array("data" => base64_encode($encryptedData), "rndKey" => base64_encode($encryptedKeys[0]));}
function decryptRnd($credentials) {
$privateKey = openssl_get_privatekey(file_get_contents("private.key"));
$result = openssl_open(base64_decode($credentials["data"]), $decryptedData, base64_decode($credentials["rndKey"]), $privateKey);
if (!$result) echo "ERROR during decryption.\n";
return $decryptedData;}
「a」是數據(加密/加密),而「b」爲通過openssl_seal產生並用於解密的隨機密鑰。
兩個密鑰文件HABE被生產在Windows上使用
- 「openssl.exe genrsa -out private.key 1024」 的專用密鑰文件
- 「openssl.exe RSA -in private.key - out public.pem -outform PEM -pubout「爲公鑰文件
在PHP中,這一切都按預期工作。
但如何在Android中實現相同的技術(我是初學者!)?
我在網上搜索了一些與PHP側的openssl_seal結合使用的例子,但是沒有找到任何可行的工作。
- 我希望能夠在Android上加密數據並在PHP上解密 。
- 而當服務器發送加密的數據,這將在Android側進行解密(藉助第二公共/專用密鑰對我假定)
我還實施本例中提到here但沒有工作(在PHP方面openssl_private_decrypt總是FALSE)。所以這並沒有幫助我,而只有Android => PHP加密沒有其他方式。
總而言之:我正在尋找一種方法來加密和解密在Android和PHP之間發送的數據,每一邊只有接收者可以解密數據。有人能給我一個例子,甚至是線索嗎?
btw:我想到public-privatekey加密**,因爲**我不想在我的應用中存儲密鑰(用於解密),以便只有消息的接收者才能解密消息。 – MojitoJoe