oswin.hu/crypto

加密工具库

v1.0.1 2022-07-19 04:54 UTC

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