我有一個讓我發瘋的問題。使用PHP的非對稱加密
我已經創建了一個對密鑰做:
$res = openssl_pkey_new(array('private_key_bits' => 2048));
/* Extract the private key from $res to $privKey */
openssl_pkey_export($res, $privKey);
/* Extract the public key from $res to $pubKey */
$pubKey = openssl_pkey_get_details($res);
$pubKey = $pubKey["key"];
使用此代碼,我有$pubKey
和$privKey
。
我可以正確加密/解密,但我對DECRYPTION有很大懷疑。
目前,我隱窩數據做:
openssl_public_encrypt($data, $encrypted, $pubKey);
它正確地加密我的數據,但閱讀的PHP文件,我發現:
http://php.net/manual/en/function.openssl-public-decrypt.php
我可以解密使用公開數據鑰匙 ??爲什麼?
我知道公鑰對ENCRYPT數據有用,但只有私鑰的所有者纔可以對數據進行DECRYPT。
如果我可以使用公鑰解密數據,讓知道公鑰的用戶很容易解密這些消息。
有人可以解釋這一點給我嗎?我正在尋找一種方法來使用兩個鍵,第一個加密,第二個(僅第二個)加密。
感謝
我知道如何加密工程Asimmetric ...正如你給我寫的,每個用戶使用其他用戶的公鑰來加密消息,但只有擁有相應私鑰的用戶才能對消息進行解密。這正是我需要的。我有的問題(疑問)是爲什麼兩個密鑰,如果我可以用一個密鑰加密/解密?我的重點是有一個密鑰加密和一(私人)解密...我可以使用PHP嗎? – Dail 2012-08-10 18:20:00
我相信我現在明白你在找什麼。 如果要使用私鑰進行加密並使用公共密鑰進行解密,則應在加密端使用openssl_private_encrypt(),並在解密端使用openssl_public_decrypt()。我剛剛注意到你在開篇文章中使用了openssl _ ** public_encrypt()**。 – 2012-08-10 18:39:25
如果我使用私鑰加密應該有人使用私鑰解密郵件?我問你,因爲如果我必須使用私鑰,我會把它放在我的PHP腳本中......我不希望有人可以讀取.php文件可以使用私鑰(我將寫入一個變量)解密我的ecrypted消息 – Dail 2012-08-10 19:10:10