furqansiddiqui / bip39-mnemonic-php
BIP39 Mnemonics 在 PHP 中的实现
0.2.1
2024-08-04 14:24 UTC
Requires
- php-64bit: ^8.2
- ext-mbstring: *
- charcoal-dev/buffers: ^0.1.0
This package is auto-updated.
Last update: 2024-09-04 14:39:25 UTC
README
PHP 中 BIP39 Mnemonics 实现
安装
先决条件
- PHP ^8.2
- ext-mbstring (适用于非英语词汇的多字节字符串 PHP 扩展)
Composer
composer require furqansiddiqui/bip39-mnemonic-php
生成安全的助记词
使用安全的 PRNG 实现生成助记词。
BIP39::fromRandom
返回 Mnemonic 类的实例。
示例
// Generate entropy using PRNG $mnemonic = \FurqanSiddiqui\BIP39\BIP39::fromRandom( \FurqanSiddiqui\BIP39\Language\English::getInstance(), wordCount: 12 ); # array(12) { [0]=> string(4) "tape" [1]=> string(8) "solution" ... [10]=> string(6) "border" [11]=> string(6) "sample" } var_dump($mnemonic->words); # string(32) "ddd9dbcd1b07a09c16f080637818675f" var_dump($mnemonic->entropy);
熵到助记词
从给定的熵生成助记词代码
BIP39::fromRandom
返回 Mnemonic 类的实例。
示例
$mnemonic = \FurqanSiddiqui\BIP39\BIP39::fromEntropy( \Charcoal\Buffers\Buffer::fromBase16("ddd9dbcd1b07a09c16f080637818675f"), \FurqanSiddiqui\BIP39\Language\English::getInstance() ); # array(12) { [0]=> string(4) "tape" [1]=> string(8) "solution" ... [10]=> string(6) "border" [11]=> string(6) "sample" } var_dump($mnemonic->words);
助记词句子/单词到助记词
从助记词代码生成熵
BIP39::fromWords
返回 Mnemonic 类的实例。
示例
$mnemonic = \FurqanSiddiqui\BIP39\BIP39::fromWords( ["tape", "solution", "viable", "current", "key", "evoke", "forward", "avoid", "gloom", "school", "border", "sample"], \FurqanSiddiqui\BIP39\Language\English::getInstance() ); #string(32) "ddd9dbcd1b07a09c16f080637818675f" var_dump($mnemonic->entropy);
助记词类
readonly class
Mnemonic
此库将根据以下结果创建此 Mnemonic 对象
使用密码短语生成种子
Mnemonic->generateSeed
根据 BIP39 规范从助记词生成种子。
返回:
生成非英语助记词代码
检查 AbstractLanguage
和 AbstractLanguageFile
类。 English 类预先加载了所有 2048 个单词,而不是每次都从本地文件中读取。要实现其他语言或自定义的 2048 个单词集合,请查看 tests
目录中的 ChineseWords.php 文件,例如实现示例。
class CustomWords extends \FurqanSiddiqui\BIP39\Language\AbstractLanguageFile { /** * @return static */ protected static function constructor(): static { return new static( language: "some_language", words: static::wordsFromFile( pathToFile: "/path/to/wordlist.txt", eolChar: PHP_EOL ), mbEncoding: "UTF-8" ); } }
然后将其用于所需的 AbstractLanguage
位置
CustomWords::getInstance()
测试向量
包括针对 官方 BIP-0039 规范 中提到的所有测试向量的 PHPUnit 测试。使用以下命令使用 phpunit.phar
执行所有测试
php phpunit.phar --bootstrap vendor/autoload.php tests/