Como Gerar e Converter Chaves Casascius Mini com Python
Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.
Conversão e Geração de Chaves Casascius Mini com Python
Aprenda neste artigo como gerar e converter chaves privadas no formato hexadecimal (64 caracteres) para versões compactas conhecidas como Casascius Mini nos comprimentos de 30, 22 e 20 caracteres, usando codificação Base58. O código é implementado em Python com foco em segurança, validação e compatibilidade com práticas modernas de criptografia.
O que é Base58?
A Base58 é uma codificação alfanumérica usada amplamente em carteiras de criptomoedas para tornar chaves e endereços mais legíveis e menos suscetíveis a erros humanos. Ela exclui caracteres visivelmente ambíguos como "0", "O", "I", e "l".
Entendendo Casascius Mini
Casascius Mini é um formato reduzido de representação de chaves privadas. Ele foi criado com o objetivo de tornar mais fácil a manipulação de chaves privadas em papel ou dispositivos físicos, como moedas de Bitcoin. Os comprimentos de saída podem variar de 20 a 30 caracteres com codificação Base58.
Funções Python para Conversão
Biblioteca Utilizada
Este script usa a biblioteca hashlib para aplicar a função SHA-256 sobre os dados hexadecimais. Essa função reduz a chave original para um hash menor e mais seguro para codificação posterior.
import hashlib
BASE58 = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'
def hex_to_base58(hex_string, comprimento=30):
"""Converte uma string hexadecimal para base58 com comprimento ajustável"""
num = int(hex_string, 16)
base58_string = ""
while num > 0:
num, remainder = divmod(num, 58)
base58_string = BASE58[remainder] + base58_string
while len(base58_string) < comprimento:
base58_string = BASE58[0] + base58_string
return base58_string[:comprimento]
def base58_to_hex(base58_string):
"""Converte uma chave Casascius Mini (base58) para hexadecimal"""
num = 0
for char in base58_string:
num *= 58
num += BASE58.index(char)
hex_string = hex(num)[2:].zfill(64)
return hex_string
def hex64_to_hex32(hex64):
"""Aplica SHA256 para gerar uma chave de 32 bytes"""
sha256_hash = hashlib.sha256(bytes.fromhex(hex64)).hexdigest()
return sha256_hash[:32]
Gerador e Conversor de Chaves Casascius Mini
def GenerateKeys():
print("Escolha o tipo de entrada:")
print("1 - Privatekey (hexadecimal)")
print("2 - Casascius Mini 30")
print("3 - Casascius Mini 22")
print("4 - Casascius Mini 20")
tipo_chave = input("Digite o número da opção desejada: ").strip()
if tipo_chave == "1":
chave_privada_original_hex = input("Digite a chave privada no formato hexadecimal (64 caracteres): ").strip().lower()
if len(chave_privada_original_hex) < 64:
chave_privada_original_hex = chave_privada_original_hex.zfill(64)
if len(chave_privada_original_hex) != 64:
print("Erro: A chave hexadecimal deve ter exatamente 64 caracteres.")
return
print("Chave Privada Original (hex64):", chave_privada_original_hex)
chave_privada_red = hex64_to_hex32(chave_privada_original_hex)
print("Chave Privada Reduzida (hex32):", chave_privada_red)
casascius_30 = hex_to_base58(chave_privada_red, comprimento=30)
print("Casascius Mini 30:", casascius_30)
casascius_22 = hex_to_base58(chave_privada_red, comprimento=22)
print("Casascius Mini 22:", casascius_22)
casascius_20 = hex_to_base58(chave_privada_red, comprimento=20)
print("Casascius Mini 20:", casascius_20)
elif tipo_chave in ["2", "3", "4"]:
comprimento = 30 if tipo_chave == "2" else 22 if tipo_chave == "3" else 20
casascius_input = input(f"Digite a Casascius Mini ({comprimento} caracteres): ").strip()
if len(casascius_input) != comprimento:
print(f"Erro: A chave Casascius Mini deve ter exatamente {comprimento} caracteres.")
return
chave_privada_original_hex = base58_to_hex(casascius_input)
print("Chave Privada Original (hex64):", chave_privada_original_hex)
chave_privada_red = hex64_to_hex32(chave_privada_original_hex)
print("Chave Privada Reduzida (hex32):", chave_privada_red)
casascius_convertido = hex_to_base58(chave_privada_red, comprimento=comprimento)
print(f"Casascius Mini {comprimento}:", casascius_convertido)
chave_privada_descompactada_hex = base58_to_hex(casascius_convertido)
assert chave_privada_original_hex == chave_privada_descompactada_hex, \
"Erro: A chave descompactada não corresponde à chave original."
print("✅ A chave privada descompactada corresponde à chave original.")
else:
print("Opção inválida. Por favor, digite 1, 2, 3 ou 4.")
GenerateKeys()
Exemplo de Entrada e Saída
Se você digitar a seguinte chave hexadecimal como entrada:
4d3c9e887d884b1c8a3adbd8d8f9a999c41a3c9e887d884b1c8a3adbd8d8f9a99
O sistema aplicará SHA-256 e transformará essa chave em uma versão de 32 caracteres, que será convertida em vários formatos Casascius Mini. Isso facilita a exportação ou impressão segura de chaves privadas.
Considerações Finais de Segurança
Manipular chaves privadas exige responsabilidade. Nunca compartilhe suas chaves em ambientes inseguros e evite salvar arquivos sem criptografia. Teste seus sistemas em ambientes isolados antes de utilizá-los com fundos reais.
Referências e Sites Oficiais
Aviso: Este artigo é apenas para fins educacionais e técnicos. Cada indivíduo é responsável por analisar o funcionamento e riscos antes de aplicar este tipo de ferramenta. Não invista ou utilize criptografia onde você não compreenda totalmente o processo envolvido.


Comentários
Comente só assim vamos crescer juntos!