从比特币bip39助记符中生成、恢复iota种子
iota_mnemonic的Python项目详细描述
Iota助记符
这是一个命令行工具,帮助用户从比特币生成物联网种子 bip39助记符
安装
$pipenv安装物联网助记符
要安装iota助记符,只需在 选择的终端:
$ pipenv install iota_mnemonic
获取源代码
您可以从存储库中克隆源代码:
$ git clone https://github.com/mlouielu/iota-mnemonic
如何使用
# Generate 24 words mnemonic and IOTA seed $ python -m iota_mnemonic Mnemonic: come grocery cube calm void liberty increase pigeon captain appear employ among float fancy cargo faith seek buzz argue lift agent split bachelor judge IOTA Seed: RTWTRPAEGJQFRWAYTIJTKWZKLN9K9VRUETFSIPUAUCLKPNNSNWAKTOXBWSCPQVNNWDLTEIPMILIOVPGIX # Generate mnemonic with passphrase $ python -m iota_mnemonic -p TREZOR Mnemonic: limit about defy sail base useless soul album aim border celery false asset average romance attract lonely track hope sun afford creek dignity couple IOTA Seed: LIPSSXDAJQRLBPTTBQTPTYBMUSTJPXWGYBKLSSBDVKPVEAXDGPZXOWPMEGRNSHTJXIUVCXYFTOXMZKIMY # Generate 12 words mnemonic with passphrase $ python -m iota_mnemonic -s 128 -p TREZOR Mnemonic: broccoli merry lucky milk lizard cannon area utility jelly click bag clever IOTA Seed: YNONELPCFBKQDDQMIBBBGJDZODCKXEBIJIMXRUGBA9AOPJEQ9SYYLGID9IXHILWVVDJ9ZEGQHCGIHQ9TB # Genreate mnemonic with japanese $ python -m iota_mnemonic -l japanese Mnemonic: こいぬ ようちえん むせん いんさつ しなもの ふのう かわく ひかり はいけん そんしつ たたかう ちいさい そうめん つうわ にんげん とおす さみだれ かまぼこ らくだ さずかる ふとる とんかつ きびしい ひつぜん IOTA Seed: ISBAFGB9LBGOQYGKKMMNK9APICZCGWIJHCMLOLPAQITGSSIGBJJOYQZJJ9NNGYIJLFB9ORMJGCWFFFYQZ # Output the mnemonic to file $ python -m iota_mnemonic -p TREZOR -o mnemonic # Recover seed from mnemonic $ python -m iota_menmonic -p TREZOR -f mnemonic Mnemonic: often various act decide tongue sausage summer wall priority knock finish until taxi robot panic toward giraffe acid avocado anchor travel kiwi actress cream IOTA Seed: CRGFVETUFKUQYTPTEH9TP9BDKBVZLG9UZJDZBDMMFSSCUPIATPEZMKBLKXOEKCRDFHHFNCCBF9SKHNYIA
它是怎么工作的?
为了从记忆中创建iota种子,我们使用iota kerl函数和 用作密码和字符串的助记符句子(utf-8nfkd) “助记符”+密码短语(同样是utf-8nfkd)用作盐。
为了得到一个有效的tryte散列,我们浓缩了salt和助记语句,并且 通过from_string函数加载到iota.Hash中。from_string 将utf-8nfkd编码为字节,然后将字节转换为iota散列。
使用每个散列,然后使用散列trits和kerl吸收和挤压:
trits=[]sponge=iota.crypto.kerl.Kerl()forwordinmnemonic:hash=iota.Hash.from_string(f'mnemonic{passphrase}{word}')hash_trits=hash.as_trits()k=iota.crypto.kerl.Kerl()k.absorb(hash_trits)k.squeeze(hash_trits)sponge.absorb(hash_trits)sponge.squeeze(trits)returniota.Hash.from_trits(trits)