小华生0x1 / bip39-php
BIP39 密语实现(PHP版本)
1.0.0
2023-03-27 11:47 UTC
Requires
- php: >=8.0
- ext-mbstring: *
This package is auto-updated.
Last update: 2024-09-27 21:43:03 UTC
README
PHP中BIP39密语实现
安装
先决条件
- PHP ^8.1
- ext-mbstring(多字节字符串PHP扩展,用于非英语单词表)
Composer
composer require xiaohuasheng0x1/bip39-php
密语对象
此库将创建此密语对象作为结果
生成密语代码(12、15、18、21或24个单词)
使用从加密安全伪随机字节中获得的熵生成12、15、18、21或24个单词的密语。
<?php declare(strict_types=1); use \BIP\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 \BIP\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 \BIP\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 \BIP\BIP39; use \BIP\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
重新运行以下测试。