dragu / bitcoin-ecdsa
PHP库,允许从私钥生成BTC地址
Requires
- php: >=5.4.0
- ext-gmp: *
Requires (Dev)
- phpunit/phpunit: 4.1.*
README
警告
此软件不提供任何形式的担保,使用风险自担。
需求
php 5.4.0 或更高版本。
php5-gmp 需要安装。
如果想要运行测试文件,需要在安装了libbitcoin的Unix系统下。
用法
安装
最佳方式是使用composer
composer require bitcoin-php/bitcoin-ecdsa
或者在你的composer.json中添加以下片段
"bitcoin-php/bitcoin-ecdsa" : ">=1.1"
实例化
use BitcoinPHP\BitcoinECDSA\BitcoinECDSA; require_once("src/BitcoinPHP/BitcoinECDSA/BitcoinECDSA.php"); $bitcoinECDSA = new BitcoinECDSA();
设置私钥
$bitcoinECDSA->setPrivateKey($k);
私钥示例
4C28FCA386C7A227600B2FE50B7CAE11EC86D3BF1FBE471BE89827E19D72AA1D 00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFFC
生成随机私钥
$bitcoinECDSA->generateRandomPrivateKey($nonce);
nonce是可选的,通常是用户获取的随机数据块。这可以是鼠标坐标。使用nonce添加随机性,意味着生成的私钥更强大。
获取私钥
$bitcoinECDSA->getPrivateKey();
返回私钥。
获取Wif
$bitcoinECDSA->getWif();
以钱包导入格式返回私钥。
获取公钥
$bitcoinECDSA->getPubKey();
返回压缩公钥。未压缩PubKey如果y坐标是偶数以0x02开始,如果y坐标是奇数以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/