php 创建BTC、LTC、ETH助记词、私钥和地址 使用示例(转)

项目依赖:

bitcoin-php bitcoin的php实现库,用于创建助记词和生成私钥 (此库需要运行在64位的php7.0+上)

ethereum-util 以太坊常用函数php实现库

composer require bitwasp/bitcoin

composer require web3p/ethereum-util

创建助记词并生成BTC私钥(WIF格式,可用于导入其他钱包)、地址:

<?php
require_once './vendor/autoload.php';

use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Crypto\Random\Random;
use BitWasp\Bitcoin\Key\Factory\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39Mnemonic;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;

// Bip39
$math = Bitcoin::getMath();
$network = Bitcoin::getNetwork();
$random = new Random();
// 生成随机数(initial entropy)
$entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);
$bip39 = MnemonicFactory::bip39();
// 通过随机数生成助记词
$mnemonic = $bip39->entropyToMnemonic($entropy);
echo "mnemonic: " . $mnemonic.PHP_EOL.PHP_EOL;// 助记词

$seedGenerator = new Bip39SeedGenerator();
// 通过助记词生成种子,传入可选加密串'hello'
$seed = $seedGenerator->getSeed($mnemonic);
echo "seed: " . $seed->getHex() . PHP_EOL;
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);

$hardened = $master->derivePath("49'/0'/0'/0/0");
echo 'WIF: ' . $hardened->getPrivateKey()->toWif();
echo PHP_EOL;
$address = new PayToPubKeyHashAddress($hardened->getPublicKey()->getPubKeyHash());
echo 'address: ' . $address->getAddress();
echo PHP_EOL;

创建助记词并生成ETH私钥、地址:

<?php
require_once './vendor/autoload.php';

use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Crypto\Random\Random;
use BitWasp\Bitcoin\Key\Factory\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39Mnemonic;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
use Web3p\EthereumUtil\Util;

// Bip39
$math = Bitcoin::getMath();
$network = Bitcoin::getNetwork();
$random = new Random();
// 生成随机数(initial entropy)
$entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);
$bip39 = MnemonicFactory::bip39();
// 通过随机数生成助记词
$mnemonic = $bip39->entropyToMnemonic($entropy);
echo "mnemonic: " . $mnemonic.PHP_EOL.PHP_EOL;// 助记词

$seedGenerator = new Bip39SeedGenerator();
// 通过助记词生成种子,传入可选加密串'hello'
$seed = $seedGenerator->getSeed($mnemonic);
echo "seed: " . $seed->getHex() . PHP_EOL;
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);

$util = new Util();
// 设置路径account
$hardened = $master->derivePath("44'/60'/0'/0/0");
echo " - m/44'/60'/0'/0/0 " .PHP_EOL;
echo " public key: " . $hardened->getPublicKey()->getHex().PHP_EOL;
echo " private key: " . $hardened->getPrivateKey()->getHex().PHP_EOL;// 可以导入到imtoken使用的私钥
echo " address: " . $util->publicKeyToAddress($util->privateKeyToPublicKey($hardened->getPrivateKey()->getHex())) . PHP_EOL;// 私钥导入imtoken后一样的地址

创建助记词并生成LTC私钥、地址:

<?php
require_once './vendor/autoload.php';

use BitWasp\Bitcoin\Address\PayToPubKeyHashAddress;
use BitWasp\Bitcoin\Bitcoin;
use BitWasp\Bitcoin\Crypto\Random\Random;
use BitWasp\Bitcoin\Key\Factory\HierarchicalKeyFactory;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39Mnemonic;
use BitWasp\Bitcoin\Mnemonic\Bip39\Bip39SeedGenerator;
use BitWasp\Bitcoin\Mnemonic\MnemonicFactory;
use BitWasp\Bitcoin\Network\NetworkFactory;

// Bip39
$math = Bitcoin::getMath();
// 设置莱特币网络
$network = NetworkFactory::litecoin();
$random = new Random();
// 生成随机数(initial entropy)
$entropy = $random->bytes(Bip39Mnemonic::MIN_ENTROPY_BYTE_LEN);
$bip39 = MnemonicFactory::bip39();
// 通过随机数生成助记词
$mnemonic = $bip39->entropyToMnemonic($entropy);
//$mnemonic = 'security hurdle lift acoustic skate recall hotel elegant amateur hidden escape slow';
echo "mnemonic: " . $mnemonic.PHP_EOL.PHP_EOL;// 助记词

$seedGenerator = new Bip39SeedGenerator();
// 通过助记词生成种子,传入可选加密串'hello'
$seed = $seedGenerator->getSeed($mnemonic);
echo "seed: " . $seed->getHex() . PHP_EOL;
$hdFactory = new HierarchicalKeyFactory();
$master = $hdFactory->fromEntropy($seed);

$hardened = $master->derivePath("44'/2'/0'/0/0");
echo 'WIF ' . $hardened->getPrivateKey()->toWif($network);
echo PHP_EOL;
$address = new PayToPubKeyHashAddress($hardened->getPublicKey()->getPubKeyHash());
echo 'address ' . $address->getAddress($network);
echo PHP_EOL;

注:还没有想到PHP如何实现生成以太坊的V3版本keystore,若有大佬实现过,恳请希望能留下足迹感激不尽

转载说明

文章转自:php 创建BTC、LTC、ETH助记词、私钥和地址 使用示例

原创文章,作者:Zeyu,如若转载,请注明出处:https://jinzhijun.cn/develop/1209

(3)
ZeyuZeyu
上一篇 2022年8月4日 下午7:06
下一篇 2022年8月4日 下午9:21

相关推荐

  • thinkphp使用input(‘param.’)多一个url参数

    今天写代码的时候出现一个奇葩问题,用input(‘param.’)获取post数据时,请求参数中多了一个请求url参数,导致数据提交总是出现问题。 经搜索得…

    2021年12月30日
    1.6K
  • VMware中CentOS 7设置文件夹共享的方法

    下午把虚拟机安装好了,但是还有一个不太给力的地方,就是本地代码每次编辑完总是要上传到服务器,之前windows的虚拟机是可以和物理机共享文件夹的,所以就尝试了一下通过文件夹共享来解…

    2021年8月16日
    1.9K
  • Centos7 升级内核版本(转)

    1、查看当前内核版本 [root@localhost ~]# uname -r 3.10.0-327.el7.x86_64 [root@localhost ~]# uname -a…

    2022年3月13日
    1.4K
  • php代码批量Zend Guard解密方法

    最近找到一套源码,想着测试一下功能,顺便学习一下他们的代码思想,结果所有的php文件都是乱码的,由于没有安装说明,只能自己摸索。打开源码,发现其中有些关键词Zend Guard,初…

    2021年12月18日
    5.4K
  • 互联网医院_三级等保_存储型跨脚本执行漏洞

    最近公司在做三级等保备案,安全测试方反馈过来一份漏洞测试报告,其中有一条定义为高危的漏洞:存储型跨脚本执行。 造成这个漏洞的原因,是因为没有对客户端提交的内容进行安全过滤。系统用的…

    2021年2月5日
    40.5K
  • 常见的Web攻击手段(转)

    午饭期间,读者小李与我闲聊,谈到上周去面试的过程。经典的高开低走,面试初期答得还可以,但是到后面却不尽人意。其中有个面试问题引起了我的注意,面试官当时问小李:你知道有哪几种常见的&…

    2021年10月10日
    1.2K
  • PHP设计模式之命令模式

    命令模式,也称为动作或者事务模式,很多教材会用饭馆来举例。作为顾客的我们是命令的下达者,服务员是这个命令的接收者,菜单是这个实际的命令,而厨师是这个命令的执行者。那么,这个模式解决…

    2022年1月7日
    1.2K
  • php实现助记词转TRX,ETH 私钥和钱包地址

    TRX助记词转地址网上都是Java,js或其他语言开发的示例,一个简单的功能需要依赖其他环境来实现表示不能忍,毕竟php是世界上最好的语言。【狗头】 一、知识准备 要实现助记词转T…

    2022年8月4日
    7.7K
  • 红米8A刷机root流程记录

    自从安卓版本升级以后,app抓包https就成了问题,所以上周就在咸鱼上买了一个红米8a,计划着root手机来做开发测试使用。在绑了小米账号7天后,终于可以解除bl锁,然后把手机r…

    2023年3月5日
    6.0K
  • 虚拟机centos安装kooder

    前天在群晖上安装了一个gitlab,在github上拉了一些项目,想着搜索项目中代码的内容,但是问题就出现了,搜索只能搜项目名和简介。难道要把所有项目拉下来搜索?于是在网上找解决方…

    2022年3月14日
    2.6K

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注