小华生0x1/bip39-php

BIP39 密语实现(PHP版本)

1.0.0 2023-03-27 11:47 UTC

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重新运行以下测试。

bip39-php

bip39-php