如何使用PHPECC生成密钥对和加密

时间:2013-01-24 16:33:18

标签: php encryption cryptography elliptic-curve

使用MDanter的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 个答案:

答案 0 :(得分:1)

您发布的代码示例是Diffie-Hellman,这是用于派生对称加密密钥的密钥协商协议。这不会让您生成公钥/私钥。

您发布的软件包还提供了ECDSA,这是一种签名算法。它实际上不能用于加密。

对于非对称加密,您几乎想要使用RSA。如果你想使用Elliptic Curve Cryptography,你可以尝试找到ElGamal-EC算法的实现,但我真的不知道PHP的实现。