fenguoz / bip39-mnemonic-php
BIP39 Mnemonics 在 PHP 中的实现
1.2.0
2023-02-09 02:20 UTC
Requires
- php: >=8.0
- ext-mbstring: *
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
重新运行以下测试。