public static function create_key_pair()
 {
     self::debug('create_key_pair');
     $privBin = '';
     for ($i = 0; $i < 32; $i++) {
         $privBin .= chr(mt_rand(0, $i ? 0xff : 0xfe));
     }
     self::debug('create_key_pair: privBin: ' . bin2hex($privBin));
     //self::debug('create_key_pair: point');
     $point = Point::mul(bcmath_Utils::bin2bc("" . $privBin), self::$secp256k1_G);
     self::debug('create_key_pair: point: ' . $point);
     //self::debug('create_key_pair: pubBinStr');
     $pubBinStr = "" . str_pad(bcmath_Utils::bc2bin($point->getX()), 32, "", STR_PAD_LEFT) . str_pad(bcmath_Utils::bc2bin($point->getY()), 32, "", STR_PAD_LEFT);
     self::debug('create_key_pair: pubBinStr: ' . bin2hex($pubBinStr));
     self::$key_pair_public = hash('ripemd160', hash('sha256', $pubBinStr, true), true);
     self::debug('create_key_pair: key_pair_public: ' . bin2hex(self::$key_pair_public));
     self::$key_pair_private = $privBin;
     self::debug('create_key_pair: key_pair_private: ' . bin2hex($privBin));
     //return array('public' => hash('ripemd160', hash('sha256', $pubBinStr, true), true), 'private' => $privBin);
 }
예제 #2
0
 public static function create_key_pair()
 {
     $privBin = '';
     for ($i = 0; $i < 32; $i++) {
         $privBin .= chr(mt_rand(0, $i ? 0xff : 0xfe));
     }
     $point = Point::mul(bcmath_Utils::bin2bc("" . $privBin), self::$secp256k1_G);
     $pubBinStr = "" . str_pad(bcmath_Utils::bc2bin($point->getX()), 32, "", STR_PAD_LEFT) . str_pad(bcmath_Utils::bc2bin($point->getY()), 32, "", STR_PAD_LEFT);
     $pubBinStrCompressed = (intval(substr($point->getY(), -1, 1)) % 2 == 0 ? "" : "") . str_pad(bcmath_Utils::bc2bin($point->getX()), 32, "", STR_PAD_LEFT);
     self::$key_pair_public = hash('ripemd160', hash('sha256', $pubBinStr, true), true);
     self::$key_pair_public_hex = bin2hex($pubBinStr);
     self::$key_pair_private = $privBin;
     self::$key_pair_private_hex = bin2hex($privBin);
     self::$key_pair_compressed_public = hash('ripemd160', hash('sha256', $pubBinStrCompressed, true), true);
     self::$key_pair_compressed_public_hex = bin2hex($pubBinStrCompressed);
     self::$key_pair_compressed_private = self::base58check_encode(self::$prefix_private, $privBin, 0x1);
     self::$key_pair_compressed_private_hex = self::$key_pair_private_hex;
 }