从window.crpyto.subtle.generateKey生成助记词

问题描述 投票:0回答:3

我正在开发基于网络的端到端加密聊天网站。为此,我使用 Web 加密 api 中提供的 window.crypto.subtle.generateKey 函数生成私钥。

我希望用户记住或存储助记词,就像我们在以太坊钱包中使用的那样,而不是加密密钥。

有没有办法从 window.crypto.subtle.generateKey 函数生成的私钥生成助记词短语,或者我应该有其他方法来实现这个吗?

提前致谢

javascript cryptography ethereum webcrypto-api end-to-end-encryption
3个回答
3
投票

有没有办法从私钥生成助记词

恰恰相反。可以从每个助记词短语中确定一组私钥 - 但您无法从私钥中确定助记词。


广泛使用的标准是BIP-39。尽管它最初是作为比特币改进协议引入的,但许多以太坊钱包也使用它。例如,您可以在这个包中找到它的 JS 实现。

注意:您正在寻找函数

mnemonicToSeed()
mnemonicToSeedSync()
。尽管乍一看似乎
entropyToMnemonic()
将私钥翻译为短语,但事实并非如此 - 熵数只是单词列表中单词的位置,而不是私钥字节。


3
投票
正如您所描述的,您想要的是将您的私钥编码为助记词。你完全可以做到这一点,最简单的例子是:将密钥分成 n 位块,并将每个块与由 2^n 个单词组成的单词列表匹配。

您是否真的想要这个用于您的整体目的是另一个问题。

我还想扩展 Petr Hejda 的答案,这起初让我感到困惑,但现在我明白了。

Petr 在与问题不同的上下文中使用“私钥”的定义。 Petr 指的是比特币协议中的“私钥”,其中助记符不用作私钥的编码,而是生成种子,然后可以使用该种子确定性地生成任意数量的密钥 (BIP-0032) ,这样当使用相同的种子时,可以重新生成这样生成的密钥,而种子又可以从助记词重新生成。在这个协议中,定义了助记词到种子,但没有定义种子到助记词,因为协议从来没有这样做。它仅从熵生成助记词,然后从助记词生成种子。

但就您而言,您可以简单地将您的“私钥”(如您所定义的那样)作为

entropyToMnemonic()

函数中的“熵”输入,它会给您“您想要的私钥”。不过,您仍然需要自己解码,因为 BIP39 包没有该功能。


我的万能钥匙 ricover 密码请帮助我,先生
ID TTDBB6udVv4KxnP7Q6pT4nbwridfxJFkqA
    


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.