使用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;
感谢任何帮助, 谢谢
答案 0 :(得分:1)
您发布的代码示例是Diffie-Hellman,这是用于派生对称加密密钥的密钥协商协议。这不会让您生成公钥/私钥。
您发布的软件包还提供了ECDSA,这是一种签名算法。它实际上不能用于加密。
对于非对称加密,您几乎想要使用RSA。如果你想使用Elliptic Curve Cryptography,你可以尝试找到ElGamal-EC算法的实现,但我真的不知道PHP的实现。