有点皱巴巴的,写下来,以免忘记。 habracrypto社区的评论应该很有趣。
我决定检查加密的Brainwallet如何成为Jaxx多币种钱包的备份系统以及密码在代码级别的含义。
首先,我将新安装的Google扩展程序钱包复制到了我的工作文件夹中。 更正了要编辑的文件。
Notepad ++具有搜索文件和插件以格式化代码的强大功能,因此查找并添加诸如console.warn(“ bits =” + bits)之类的行可帮助您快速确定生成和还原钱包时发生的情况。 还发现了对用户隐藏的功能,这可能允许提高密码对偏执狂的抵抗力。
因此,在创建钱包时:
1.使用rng生成128个伪随机位:
function generateMnemonic(strength, rng, wordlist) { strength = strength || 128 rng = rng || randomBytes var hex = rng(strength / 8).toString('hex') console.warn('hex=' + hex) return entropyToMnemonic(hex, wordlist) }
2.计算4位校验和
3.总位图分为12位,然后转换为Integer。 我们为代码表获得12个索引。
4.从代码表中收集了一个用于钱包备份的单词字符串,其大小为2225个单词。
5.根据选择,通过对128位种子应用各种哈希算法来创建不同的钱包。
var jaxx; (function (jaxx) { var Seed = (function () { function Seed() { } Seed.generateMnemonic = function () { return thirdparty.bip39.generateMnemonic(); }; Seed.validateSeed = function (seed) { return (thirdparty.bip39.validateMnemonic(seed)) ? true : false; };
第三方内部包含许多不同算法的实现,您可以重新绘制jaxx以适合您的需求。
hash160: hash160, hash256: hash256, ripemd160: ripemd160, sha1: sha1, sha256: sha256
还有很多有趣的代码,我会继续在其中进行挖掘。
还原钱包时,在代码表中找到的索引将添加不重要的0到12位,检查校验和,立即从接收到的种子中生成密钥,并开始与区块链同步。
words=boil,matter,crawl,clean,choice,gasp,clay,defy,crew,amount,cushion,pretty
chunks=00011001000,10001001010,00110010101,00101010010,00101000001,01100000001,00101010001,00111001101,00110011010,00001000000,00110110011,10101010001
bits=000110010001000100101000110010101001010100100010100000101100000001001010100010011100110100110011010000010000000011011001110101010001
checksum=0001
对我来说,所有这些经历都成为加深我对加密货币认识的一种奇怪的材料。
PS,是的,我为什么:
您认为,如果将神经密码分析应用于此算法,将有可能加速钱包黑客入侵,其私钥从位数组确定性地编码,并用作多个钱包的种子。
我将很高兴并感谢python代码示例,测量不同硬件上的键选择速度非常有趣。