furqansiddiqui/bip39-mnemonic-php

BIP39 Mnemonics 在 PHP 中的实现

0.2.1 2024-08-04 14:24 UTC

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 规范从助记词生成种子。

返回:

生成非英语助记词代码

检查 AbstractLanguageAbstractLanguageFile 类。 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/