cpuchain-php / cpuchain-ecdsa
PHP库,允许从私钥生成CPU地址
Requires
- php: >=5.4.0
- ext-gmp: *
Requires (Dev)
- phpunit/phpunit: 8.4.*
README
需求
php 5.4.0或更高版本。
php5-gmp需要安装。
如果您想运行测试文件,您需要在安装了libbitcoin的Unix系统下。
用法
安装
最佳方式是使用composer
composer require cpuchain-php/cpuchain-ecdsa
或者,在您的composer.json中添加以下片段
"cpuchain-php/cpuchain-ecdsa" : ">=1.3"
实例化
use CPUchainPHP\CPUchainECDSA\CPUchainECDSA; require_once("src/CPUchainPHP/CPUchainECDSA/CPUchainECDSA.php"); $cpuchainECDSA = new CPUchainECDSA();
设置私钥
$cpuchainECDSA->setPrivateKey($k);
私钥示例
4C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC
生成随机私钥
$cpuchainECDSA->generateRandomPrivateKey($nonce);
nonce是可选的,通常nonce是您从用户那里获得的随机数据块。这可以是鼠标坐标。使用nonce会增加随机性,这意味着生成的私钥更强。
获取私钥
$cpuchainECDSA->getPrivateKey();
返回私钥。
获取Wif
$cpuchainECDSA->getWif();
以钱包导入格式返回私钥。
获取公钥
$cpuchainECDSA->getPubKey();
返回压缩公钥。如果y坐标是偶数,压缩PubKey以0x02开头,如果是奇数,以0x03开头,接下来32字节对应于x坐标。
示例:0226c50013603b085fbc26411d5d7e564b252d88964eedc4e01251d2d495e92c29
获取未压缩公钥
$cpuchainECDSA->getUncompressedPubKey();
返回未压缩PubKey。未压缩PubKey以0x04开头,接下来32字节是x坐标,最后32字节是y坐标。
示例:04c80e8af3f1b7816a18aa24f242fc0740e9c4027d67c76dacf4ce32d2e5aace241c426fd288a9976ca750f1b192d3acd89dfbeca07ef27f3e5eb5d482354c4249
获取公钥坐标
$cpuchainECDSA->getPubKeyPoints();
返回包含公钥x和y坐标的数组
示例:Array ( [x] => a69243f3c4c047aba38d7ac3660317629c957ab1f89ea42343aee186538a34f8 [y] => b6d862f39819060378542a3bb43ff76b5d7bb23fc012f09c3cd2724bebe0b0bd )
获取地址
$cpuchainECDSA->getAddress();
返回压缩的CPUchain地址。
获取未压缩地址
$cpuchainECDSA->getUncompressedAddress();
返回未压缩的CPUchain地址。
验证地址
$cpuchainECDSA->validateAddress($address);
如果地址有效则返回true,否则返回false。
验证Wif密钥
$cpuchainECDSA->validateWifKey($wif);
如果WIF密钥有效则返回true,否则返回false。
签名
签名消息
$cpuchainECDSA->signMessage('message');
返回satoshi客户端标准签名消息。
验证消息
$cpuchainECDSA->checkSignatureForRawMessage($signedMessage);
如果签名与地址匹配则返回true,否则返回false。
签名sha256哈希
$cpuchainECDSA->signHash($hash);
返回DER编码的十六进制签名。
验证签名
$cpuchainECDSA->checkDerSignature($pubKey, $signature, $hash)
如果签名与公钥匹配,则返回true,否则返回false。
示例
许可证
这是一款免费且无任何限制的软件,已发布到公共领域。
任何人都可以免费复制、修改、发布、使用、编译、销售或以任何方式分发此软件,无论是源代码形式还是编译的二进制形式,无论出于商业目的还是非商业目的。
在承认版权法的司法管辖区,本软件的作者或作者将本软件的任何和所有版权利益奉献给公共领域。我们做出这一奉献是为了公众的大局利益,损害我们继承人或继任者的利益。我们意图这一奉献是永久放弃根据版权法对软件的所有现有和未来权利的明确行为。
软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、特定用途适用性和非侵权性保证。在任何情况下,作者不对任何索赔、损害或其他责任负责,无论基于合同、侵权或其他原因,无论源于、产生于或与软件或软件的使用或其他处理有关。
更多信息,请参阅 http://unlicense.org/
致谢
此库是 BitcoinECDSA 的分支,由 BitcoinPHP 开发,已适配用于 CPUchain。