oswin.hu / crypto
加密工具库
v1.0.1
2022-07-19 04:54 UTC
Requires
- php: >=7.4
- ext-bcmath: *
- ext-gmp: *
- ext-openssl: *
Requires (Dev)
- phpunit/phpunit: ~6.0
This package is not auto-updated.
Last update: 2024-09-25 14:25:33 UTC
README
PHP中用于比特币和Zetacoin兼容加密货币的常用实用工具和库集合,使用secp256k1 ECDSA曲线。
代码可能比较杂乱无章,但在将此代码库与PHPECC代码库中的项目合并时,我仍在努力整合。当前功能包括
- 私钥生成和加载
- 公钥地址打印
- 消息签名和验证
- 地址生成和验证
- 地址压缩、解压缩、编码和解码。
- 支持任意地址前缀
目前以下项目正在运行
- Base58.php
- SECp256k1.php
- PointMathGMP.php
- AddressValidation.php
- AddressCodec.php
- PrivateKey.php
- Signature.php
用法
AddressCodec
AddressCodec类为常见的Zetacoin/Bitcoin(以及兼容)地址功能提供了一个简单的接口。在您的PHP代码中加载以下类
use Crypto\AddressCodec;
最基础的例子,获取DER编码公钥的X和Y坐标(旧格式)
$derPublicKey = '04a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235'; $point = AddressCodec::Point($derPublicKey); echo $point['x']; echo $point['y'];
这将返回一个包含X和Y的数组
X = a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd
Y = 5b8dec5235a0fa8722476c7709c02559e3aa73aa03918ba2d492eea75abea235
更有用的方法是使用现代加密货币所使用的压缩公钥
$compressedPublicKey = '03a34b99f22c790c4e36b2b3c2c35a36db06226e41c692fc82b8b56ac1c540c5bd'; $point = AddressCodec::Decompress($compressedPublicKey); echo $point['x']; echo $point['y'];
反之亦然
$compressedPublicKey = AddressCodec::Compress($point); $derPublicKey = AddressCodec::Hex($point);
接下来是更有用的功能,将公钥编码为加密货币地址。首先哈希您的公钥,然后对其进行编码。
$hash = AddressCodec::Hash($compressedPublicKey); $address = AddressCodec::Encode($hash); echo $address;
这将给您
Address = 1F3sAm6ZtwLAUnj7d38pGFxtP3RVEvtsbV
指定您自己的前缀(十六进制格式)
$address = AddressCodec::Encode($hash, "50");
这将给您
Address = ZS67wSwchNQFuTt3abnK4HjpjQ2x79YZed