【问题标题】:Elliptic Curve Cryptography PHP: catchable fatal error argument 1 passed to __construct()椭圆曲线密码学 PHP:可捕获的致命错误参数 1 传递给 __construct()
【发布时间】: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


    【解决方案1】:

    错误在最后一行

    $Alice = new EcDH(g) -> 错误

    $Alice = new EcDH($g) -> 正确

    一个愚蠢的错误导致了巨大的错误..

    【讨论】:

      猜你喜欢
      • 2017-02-21
      • 1970-01-01
      • 1970-01-01
      • 2014-11-11
      • 2012-03-13
      • 1970-01-01
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多