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