【发布时间】:2017-10-06 06:42:23
【问题描述】:
我正在尝试使用 1 中提供的 Matyas Danter 的 phpecc 库来使用椭圆曲线密码术。但是,当我创建变量 Alice 时,我收到以下错误,尽管传递的参数是一个 Point.. 请帮助..
可捕获的致命错误:传递给 EcDH::__construct() 的参数 1 必须是 Point 的实例,给定字符串,在第 31 行的 C:\xampp\htdocs\ECC-example.php 中调用并在 C:\ 中定义xampp\htdocs\classes\EcDH.php 在第 39 行
include 'autoload.inc.php';
include 'classes/EcDH.php';
include 'classes/PHPECC.class.php';
include 'classes/SECurve.class.php';
$keypair = PHPECC::hex_keypair_genorate();
$g = NISTcurve::generator_192();
echo $g;
$Alice = new EcDH(g);
..................................
NISTcurve.php 具有以下功能:
public static function generator_192() {
// NIST Curve P-192:
if (extension_loaded('gmp') && USE_EXT == 'GMP') {
$_p = '6277101735386680763835789423207666416083908700390324961279';
$_r = '6277101735386680763835789423176059013767194773182842284081';
$_b = gmp_Utils::gmp_hexdec('0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1');
$_Gx = gmp_Utils::gmp_hexdec('0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012');
$_Gy = gmp_Utils::gmp_hexdec('0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811');
$curve_192 = new CurveFp($_p, -3, $_b);
$generator_192 = new Point($curve_192, $_Gx, $_Gy, $_r);
} else if (extension_loaded('bcmath') && USE_EXT == 'BCMATH') {
$_p = '6277101735386680763835789423207666416083908700390324961279';
$_r = '6277101735386680763835789423176059013767194773182842284081';
$_b = bcmath_Utils::bchexdec('0x64210519e59c80e70fa7e9ab72243049feb8deecc146b9b1');
$_Gx = bcmath_Utils::bchexdec('0x188da80eb03090f67cbf20eb43a18800f4ff0afd82ff1012');
$_Gy = bcmath_Utils::bchexdec('0x07192b95ffc8da78631011ed6b24cdd573f977a11e794811');
$curve_192 = new CurveFp($_p, -3, $_b);
$generator_192 = new Point($curve_192, $_Gx, $_Gy, $_r);
}
return $generator_192;
}
【问题讨论】:
标签: php encryption public-key-encryption elliptic-curve diffie-hellman