2013-01-24 83 views
2

使用MDanter的PHPECC包,我如何生成公鑰/私鑰對並加密消息?如何生成密鑰對並使用PHPECC加密

我在這裏找到這個圖書館:https://github.com/mdanter/phpecc 但沒有提供教程或說明。

我嘗試了以下操作,但是我只有公鑰,我不知道從哪裏獲取私鑰以及如何更改密鑰長度。

$g = NISTcurve::generator_192(); 

$Alice = new EcDH($g); 
$Bob = new EcDH($g); 

//Alice and bob generate their private keys and public Point 
$pubPointA = $Alice->getPublicPoint(); 

$pubPointB = $Bob->getPublicPoint(); 

//Alice sends Bob her public key and vice versa 
$Alice->setPublicPoint($pubPointB); 

$Bob->setPublicPoint($pubPointA); 

//key_A == key_B 
$key_A = $Alice->calculateKey(); 

$key_B = $Bob->calculateKey(); 

//String to encrypt 
$str='My test msg.'; 

echo 'encoding '.$str; 
//Alice encrypt the string 
$Ae = $Alice->encrypt($str); 
echo $Ae; 

echo '<hr>'; 
//Bob receive the string and decrypt it 
$Bd = $Bob->decrypt($Ae); 
echo 'Bob decrypt '.$Bd; 

任何幫助表示讚賞, 謝謝

回答

1

您發佈的代碼示例是Diffie-Hellman,這是派生密鑰對稱加密鑰匙協商協議。這不會讓你生成公鑰/私鑰。

您發佈的軟件包還提供ECDSA,這是一種簽名算法。它不能真正用於加密。

非對稱加密,你幾乎想要使用RSA。如果你想使用Elliptic Curve Cryptography,你可以嘗試找到一個ElGamal-EC算法的實現,但是我不知道PHP的一個。

+0

哎呀,我明白了......不知道爲什麼這個人叫它PHPECC然後......感謝提示,我會尋找一個ElGamal-EC的PHP實現:) –

+0

因爲大多數人實際上使用ECC正在執行ECDSA或EC-DH。我提到的ElGamal-EC在任何方面都不是真正的支持。如果你正在做非對稱加密,你應該使用RSA,除非使用橢圓曲線是一個明確的要求 –

+0

好吧,謝謝彼得。 –