fenguoz/bip39-mnemonic-php

BIP39 Mnemonics 在 PHP 中的实现

1.2.0 2023-02-09 02:20 UTC

This package is auto-updated.

Last update: 2024-09-09 05:56:17 UTC


README

PHP 中 Mnemonic BIP39 实现

安装

先决条件

  • PHP ^8.1
  • ext-mbstring (适用于非英语词汇列表的多字节字符串 PHP 扩展)

Composer

composer require fenguoz/bip39-mnemonic-php

助记符对象

该库将创建此助记符对象作为结果

生成助记符代码(12、15、18、21或24个单词)

使用从加密安全伪随机字节中驱动的熵生成12、15、18、21或24个单词的助记符。

<?php
declare(strict_types=1);

use \FurqanSiddiqui\BIP39\BIP39;

$mnemonic = BIP39::Generate(12);
var_dump($mnemonic->words);
# array(12) { [0]=> string(6) "barrel" [1]=> string(6) "viable" [2]=> string(6) "become" [3]=> string(4) "kiss" [4]=> string(6) "spider" [5]=> string(8) "business" [6]=> string(4) "wool" [7]=> string(6) "amused" [8]=> string(7) "satoshi" [9]=> string(4) "duty" [10]=> string(4) "girl" [11]=> string(5) "april" }
var_dump($mnemonic->entropy);
# string(32) "12de684fbd6d1a3e3f5041bf68918905" 

使用指定熵生成助记符

指定您自己的熵以生成助记符代码

<?php
declare(strict_types=1);

use \FurqanSiddiqui\BIP39\BIP39;

$mnemonic = BIP39::Entropy("f47f0e5dcf6d1ddf0e70791dafc9ae512130891817769976cd50533021e58a8b");
var_dump($mnemonic->wordsCount); # int(24) 
var_dump($mnemonic->words); # array(24) { [0]=> string(7) "virtual" [1]=> string(4) "wear" [2]=> stri...
var_dump($mnemonic->binaryChunks); # array(24) { [0]=> string(11) "11110100011" [1]=> string(11) "11111000011" [2]=> string(11) "10010...
var_dump($mnemonic->entropy); # string(64) "f47f0e5dcf6d1ddf0e70791dafc9ae512130891817769976cd50533021e58a8b"

反转(助记符到熵)

使用助记符代码查找熵。默认情况下,库将进行交叉检查,因此不使用有效的助记符代码将抛出异常。

<?php
declare(strict_types=1);

use \FurqanSiddiqui\BIP39\BIP39;

$mnemonic = BIP39::Words("virtual wear number paddle spike usage degree august buffalo layer high pelican basic duty gate uphold offer reopen favorite please acoustic version clay leader");
var_dump($mnemonic->entropy); # string(64) "f47f0e5dcf6d1ddf0e70791dafc9ae512130891817769976cd50533021e58a8b"

生成非英语助记符代码

助记符代码可以生成在 BIP39 规范中支持的所有语言中。以下示例生成12个西班牙语的助记符代码作为示例,并且可以用其他任何语言替换,只要在 BIP39 规范中有词汇列表,请参阅 此处

<?php
declare(strict_types=1);

use \FurqanSiddiqui\BIP39\BIP39;
use \FurqanSiddiqui\BIP39\Wordlist;

$mnemonic = (new BIP39(12, Wordlist::Spanish())) // 12 words, Spanish language
    ->generateSecureMnemonic(); // Generate mnemonic
    
print implode(" ", $mnemonic->words); # bastón tímido turismo pez pez fideo pellejo persona brinco yoga rasgo diluir
print $mnemonic->entropy; # 1c9cfbc5d93b26b12bcd8c229fdb07a2

测试向量

  • [2023-01-29]:官方 BIP-0039 规范 中提到的测试向量已在包中测试并包含在内。执行 tests/test_a.php 重新运行以下测试。