先看图
跑了大概一天
这是结果
具体是通过BIP39规则生成的种子数据
生成完词组后,再根据词组生成姨太地址
# 生成随机助记词
def generate_mnemonic():
entropy = os.urandom(16) # 随机生成 16 字节熵
mnemonic = []
for i in range(12): # 生成 12 个助记词
word_index = int.from_bytes(entropy[i:i+1], 'big') % len(WORDLIST)
mnemonic.append(WORDLIST[word_index])
return ' '.join(mnemonic)
# 根据助记词生成以太坊地址
def generate_eth_address_from_mnemonic(mnemonic):
seed = mnemonic_to_seed(mnemonic) # 将助记词转换为种子
private_key = keys.PrivateKey(keccak(seed)) # 生成私钥
public_key = private_key.public_key # 生成公钥
address = public_key.to_checksum_address() # 生成以太坊地址
return address, private_key.to_hex()
# 将助记词转换为种子
def mnemonic_to_seed(mnemonic, passphrase=''):
mnemonic_bytes = mnemonic.encode('utf-8') # 助记词转字节
salt = ('mnemonic' + passphrase).encode('utf-8') # 加盐
return hashlib.pbkdf2_hmac('sha512', mnemonic_bytes, salt, 2048) # 使用 PBKDF2 生成种子