Como Gerar Frases BIP39 com Python e Entropia Hexadecimal
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Gerando Frases Mnemônicas BIP39 com Python
As frases mnemônicas BIP39 são amplamente utilizadas para gerar carteiras determinísticas (HD Wallets) em aplicações de blockchain e criptomoedas. Este artigo ensina como gerar entropia hexadecimal personalizada e convertê-la em frases de recuperação com 12, 15, 18 e 24 palavras, usando Python e a biblioteca mnemonic.
O que é BIP39?
O padrão BIP39 (Bitcoin Improvement Proposal 39) define como criar uma frase mnemônica (seed phrase) a partir de uma entropia criptográfica. Essa frase é essencial para restaurar carteiras e deve ser gerada com máxima segurança.
Como Funciona a Entropia?
A entropia é uma sequência de bits aleatórios usada como base para gerar a frase mnemônica. A BIP39 define tamanhos específicos de entropia que correspondem à quantidade de palavras na frase:
- 12 palavras: 128 bits (16 bytes)
- 15 palavras: 160 bits (20 bytes)
- 18 palavras: 192 bits (24 bytes)
- 24 palavras: 256 bits (32 bytes)
No exemplo abaixo, entropias são geradas aleatoriamente em formato hexadecimal, adaptadas para os tamanhos exigidos e convertidas em frases mnemônicas.
Script Python para Gerar Frases Mnemônicas
import random
from mnemonic import Mnemonic
# Função para ajustar a entropia para o tamanho desejado
def ajustar_entropia(base_hex, tamanho_bytes):
base_hex = base_hex.lower().replace('0x', '')
base_bytes = bytes.fromhex(base_hex)
if len(base_bytes) > tamanho_bytes:
return base_bytes[:tamanho_bytes]
return base_bytes.ljust(tamanho_bytes, b'\x00')
# Inicializar biblioteca BIP39
mnemo = Mnemonic("english")
# Tamanhos desejados: (quantidade de palavras, bytes de entropia)
tamanhos = {
12: 16,
15: 20,
18: 24,
24: 32
}
# Caracteres hexadecimais
hex_chars = '0123456789abcdef'
# Loop para gerar frases mnemônicas a partir de 32 entropias diferentes
for i in range(32):
resultado = ''.join(random.choice(hex_chars) for _ in range(32))
print(f"\n🧬 Entropia gerada ({i+1}): {resultado}")
for palavras, bytes_necessarios in tamanhos.items():
entropia = ajustar_entropia(resultado, bytes_necessarios)
frase = mnemo.to_mnemonic(entropia)
print(f"🔑 {palavras} palavras ({bytes_necessarios} bytes de entropia):")
print(frase)
Exemplo de Saída
A execução do script gera resultados como:
🧬 Entropia gerada (1): f3c4a289b63dfe7ad880d9a9e2a6011f
🔑 12 palavras (16 bytes de entropia):
voice lake april lunch elder ethics awkward butter smile laptop rescue cup
Segurança na Geração de Frases Mnemônicas
Frases mnemônicas devem ser geradas sempre offline, em ambientes seguros, e jamais compartilhadas ou salvas em texto puro em dispositivos conectados à internet. O ideal é utilizar sistemas com air gap ou dispositivos especializados (como hardware wallets).
Biblioteca Utilizada
O código utiliza a biblioteca oficial mnemonic, desenvolvida para compatibilidade com o padrão BIP39. Para mais informações, acesse o repositório:
Conclusão
Gerar frases BIP39 com Python permite criar sistemas personalizados de backup, restauração e geração de carteiras. Este script é útil para desenvolvedores, entusiastas de segurança digital e auditores de criptomoedas que desejam compreender como funciona o processo interno por trás das seeds de recuperação.
Aviso: Este conteúdo é educativo. Cada usuário é responsável por analisar o código, testar em ambiente seguro e não aplicar em contextos financeiros sem entender os riscos envolvidos. Não compartilhe nem armazene frases mnemônicas de forma insegura.


Comentários
Comente só assim vamos crescer juntos!