看过IOTA的区块链算法介绍后,感觉这种组链方式确实比较有前途。下载了一个IOTA的钱包,发现这种币没有像比特币那样的私钥钱包,而是一个81位由大写字母和数字9组成的字符串种子。这81位的字符种子就代表了用户的帐户所有权。不知为什么种会让人有一种人心不踏实的感觉,总有种这么生成的密钥会不安全的感觉。这个以后再研究,今天咱只讲密钥种子的一种生成方法。
为了生成很随机的密钥种子字符串,我使用了python的random模块。直接上代码:
#!/usr/bin/env python
#coding:UTF-8
import random
import sys
class IOTASEEDObj(object):
"""docstring for IOTASEEDObj"""
def __init__(self):
super(IOTASEEDObj, self).__init__()
self.pyseed = None
self.keys = ['9']
asciiA = ord('A')
for i in range(26):
self.keys.append(chr(asciiA + i))
def getIOTASEED(self,myshortkey):
xadd = 0
seeds = ''
for m in myshortkey:
xadd += (xadd*10 + ord(m))
random.seed(xadd)
for i in range(81):
seeds += self.keys[random.randint(0,26)]
return seeds
def main(myseed):
iotatool = IOTASEEDObj()
seeds = iotatool.getIOTASEED(myseed)
print('以下是为你生成的IOTA种子:')
print(seeds)
if __name__ == '__main__':
args = sys.argv
if len(args) == 2:
myseedkeys = args[1]
if len(myseedkeys) < 8:
print('你的种子最好大于8位字符')
else:
print(myseedkeys,'请牢记你种子的种子')
main(myseedkeys)
else:
print '请设置你自已的密码,密码最好不要太短'
我先把这个种子生成脚本命名为myseed.py
打开终端,cd 到你python脚本所在目录
python myseed.py 你自已的短种子字符串
这个时候会生成一个IOTA的81位帐户种子,这里你只要牢记你的脚本使用的种子就可以得到算得你的IOTA种子。
进行后的例子:
user$python IOTASEED.py lllllllls
请牢记你种子的种子:
lllllllls
以下是为你生成的IOTA种子:
SRDDGSXXGPCBXHOKUOTCICHJVADGZRAATEKGYOUPRATUZKMPLKRLQIDRLBITFKQSRDTOVMDDTWLCGEGSZ