Como Converter Chave WIF para Chave Privada Hexadecimal em Python
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Como Converter Chave WIF para Chave Privada Hexadecimal em Python
A conversão de uma chave privada no formato WIF (Wallet Import Format) para sua representação hexadecimal é uma operação essencial para desenvolvedores e entusiastas de criptomoedas. Este processo permite extrair a chave privada original que pode ser utilizada em diversos aplicativos e carteiras Bitcoin.
O que é o formato WIF?
O WIF é um formato codificado em Base58Check, que representa a chave privada de maneira compacta e inclui um checksum para validar a integridade dos dados. Pode indicar se a chave corresponde a um endereço compressed (comprimido) ou uncompressed (não comprimido), impactando o formato do endereço Bitcoin gerado.
Exemplo prático em Python
O código a seguir ilustra a conversão de uma chave WIF para sua chave privada hexadecimal usando as bibliotecas base58 e hashlib. Ele identifica se a chave está no formato comprimido ou não, fornecendo detalhes úteis para aplicações posteriores.
import base58
def wif_to_private_key(wif):
try:
# Decodifica Base58Check
decoded = base58.b58decode_check(wif)
# Extrai prefixo e verifica se a chave é compressed
prefix = decoded[0]
if len(decoded) == 34 and decoded[-1] == 0x01:
# WIF comprimido
priv_key = decoded[1:-1]
compressed = True
else:
# WIF não comprimido
priv_key = decoded[1:]
compressed = False
return priv_key.hex(), compressed
except ValueError as e:
print(f"Erro: {e}")
return None, None
# Exemplo de uso:
wif = "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qgf6uAwNAjDEYoXME7wD" # Substitua pelo seu WIF
private_key_hex, is_compressed = wif_to_private_key(wif)
if private_key_hex:
print("Private Key (hex):", private_key_hex)
print("Compressed:", is_compressed)
else:
print("Falha ao processar o WIF.")
Como funciona o código?
- base58.b58decode_check(wif): Decodifica o WIF verificando o checksum para garantir integridade.
- Prefixo: O primeiro byte indica a rede (geralmente 0x80 para Bitcoin mainnet).
- Compressed flag: A presença do byte
0x01no final indica que a chave corresponde a um endereço comprimido. - Retorno: A função retorna a chave privada em hexadecimal e um booleano indicando se é comprimida.
Importância e Aplicações
Esse tipo de conversão é importante para integração entre diferentes sistemas e carteiras que utilizam formatos distintos para armazenar chaves privadas. Além disso, permite a análise direta da chave em seu formato hexadecimal, facilitando processos de verificação e auditoria.
Segurança e Responsabilidade
Nunca compartilhe sua chave privada ou WIF em ambientes públicos ou inseguros. Essa chave concede total controle sobre os fundos associados ao endereço Bitcoin. Sempre realize uma avaliação cuidadosa e individual antes de utilizar códigos e chaves em ambientes reais.

Comentários
Comente só assim vamos crescer juntos!