Formulário de contato

Nome

E-mail *

Mensagem *

Imagem

Analisando Entropia em Chaves Públicas Hexadecimais

Analisando Entropia em Chaves Públicas Hexadecimais

Publicado por em


@CanalQb no YouTube


@CanalQb

Analisando Entropia em Chaves Públicas Hexadecimais


Sempre crie uma frase de segurança única para jogos, testnets ou airdrops e evite usar sua carteira principal.



Análise de Entropia em Chaves Públicas Hexadecimais com Python

Neste artigo, apresentamos um estudo prático sobre entropia em chaves públicas representadas no formato hexadecimal. Utilizando Python, realizamos a conversão dessas chaves para bits e avaliamos a distribuição estatística dos bits através do cálculo de entropia. Este tipo de análise é útil em criptografia e segurança digital para avaliar o grau de aleatoriedade de uma chave, o que está diretamente ligado à sua força contra ataques.

O Que é Entropia?

Na ciência da informação, a entropia mede a imprevisibilidade ou aleatoriedade de um conjunto de dados. Em criptografia, uma chave com alta entropia é geralmente considerada mais segura, pois oferece maior resistência a ataques de força bruta ou previsibilidade estatística.

Objetivo do Script

O objetivo principal deste script é calcular a entropia de uma grande lista de valores hexadecimais que representam possíveis chaves públicas. Esses valores são convertidos para bits, e em seguida aplicamos a fórmula da entropia de Shannon para mensurar a aleatoriedade de cada chave.

Funcionalidades Implementadas

  • Conversão de hexadecimal para sequência de bits
  • Cálculo de entropia bit a bit
  • Comparação entre entropia atual e anterior
  • Relatório linha a linha sobre o tamanho da chave, valor e comparação

Exemplo de Saída

Exemplo de Saída


Linha 1 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000001 - Entropia (0.000000 bits) - Tamanho da chave pública (256) bits - Nenhum comparativo anterior
Linha 2 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000002 - Entropia (0.081705 bits) - Tamanho da chave pública (256) bits - Maior
Linha 3 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000003 - Entropia (0.125000 bits) - Tamanho da chave pública (256) bits - Maior
Linha 4 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000004 - Entropia (0.094009 bits) - Tamanho da chave pública (256) bits - Menor
Linha 5 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000008 - Entropia (0.000000 bits) - Tamanho da chave pública (256) bits - Menor
Linha 6 - Chave Pública: 000000000000000000000000000000000000000000000000000000000000000F - Entropia (0.250000 bits) - Tamanho da chave pública (256) bits - Maior
Linha 7 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000010 - Entropia (0.000000 bits) - Tamanho da chave pública (256) bits - Menor
Linha 8 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000020 - Entropia (0.081705 bits) - Tamanho da chave pública (256) bits - Maior
Linha 9 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000040 - Entropia (0.094009 bits) - Tamanho da chave pública (256) bits - Maior
Linha 10 - Chave Pública: 0000000000000000000000000000000000000000000000000000000000000080 - Entropia (0.000000 bits) - Tamanho da chave pública (256) bits - Menor

Código Python Completo

import math

def hex_to_bits(hex_string):
    bin_string = bin(int(hex_string, 16))[2:].zfill(len(hex_string) * 4)
    return bin_string

def calculate_entropy(bits):
    bit_counts = {'0': bits.count('0'), '1': bits.count('1')}
    total_bits = len(bits)
    probabilities = [bit_counts['0'] / total_bits, bit_counts['1'] / total_bits]
    entropy = -sum(p * math.log2(p) for p in probabilities if p > 0)
    return entropy

public_keys = [
"1","1","1",
"2","3","3",
"4","7","7",
"8","8","f",
"10","15","1f",
"20","31","3f",
"40","000000000000000000000000000000000000000000000000000000000000004c","7f",
"80","e0","ff",
"100","00000000000000000000000000000000000000000000000000000000000001d3","1ff",
"200","202","3ff",
"400","483","7ff",
"800","0000000000000000000000000000000000000000000000000000000000000a7b","fff",
"1000","1460","1fff",
"2000","2930","3fff",
"4000","00000000000000000000000000000000000000000000000000000000000068f3","7fff",
"8000","000000000000000000000000000000000000000000000000000000000000c936","ffff",
"10000","000000000000000000000000000000000000000000000000000000000001764f","1ffff",
"20000","000000000000000000000000000000000000000000000000000000000003080d","3ffff",
"40000","000000000000000000000000000000000000000000000000000000000005749f","7ffff",
"80000","00000000000000000000000000000000000000000000000000000000000d2c55","fffff",
"100000","00000000000000000000000000000000000000000000000000000000001ba534","1fffff",
"200000","00000000000000000000000000000000000000000000000000000000002de40f","3fffff",
"400000","556e52","7fffff",
"800000","0000000000000000000000000000000000000000000000000000000000dc2a04","ffffff",
"1000000","0000000000000000000000000000000000000000000000000000000001fa5ee5","1ffffff",
"2000000","000000000000000000000000000000000000000000000000000000000340326e","3ffffff",
"4000000","0000000000000000000000000000000000000000000000000000000006ac3875","7ffffff",
"8000000","000000000000000000000000000000000000000000000000000000000d916ce8","fffffff",
"10000000","0000000000000000000000000000000000000000000000000000000017e2551e","1fffffff",
"20000000","000000000000000000000000000000000000000000000000000000003d94cd64","3fffffff",
"40000000","000000000000000000000000000000000000000000000000000000007d4fe747","7fffffff",
"80000000","00000000000000000000000000000000000000000000000000000000b862a62e","ffffffff",
"100000000","00000000000000000000000000000000000000000000000000000001a96ca8d8","1ffffffff",
"200000000","000000000000000000000000000000000000000000000000000000034a65911d","3ffffffff",
"400000000","00000000000000000000000000000000000000000000000000000004aed21170","7ffffffff",
"800000000","00000000000000000000000000000000000000000000000000000009de820a7c","fffffffff",
"1000000000","0000000000000000000000000000000000000000000000000000001757756a93","1fffffffff",
"2000000000","00000000000000000000000000000000000000000000000000000022382facd0","3fffffffff",
"4000000000","0000000000000000000000000000000000000000000000000000004b5f8303e9","7fffffffff",
"8000000000","000000000000000000000000000000000000000000000000000000e9ae4933d6","ffffffffff",
"10000000000","00000000000000000000000000000000000000000000000000000153869acc5b","1ffffffffff",
"20000000000","000000000000000000000000000000000000000000000000000002a221c58d8f","3ffffffffff",
"40000000000","000000000000000000000000000000000000000000000000000006bd3b27c591","7ffffffffff",
"80000000000","00000000000000000000000000000000000000000000000000000e02b35a358f","fffffffffff",
"100000000000","0000000000000000000000000000000000000000000000000000122fca143c05","1fffffffffff",
"200000000000","00000000000000000000000000000000000000000000000000002ec18388d544","3fffffffffff",
"400000000000","00000000000000000000000000000000000000000000000000006cd610b53cba","7fffffffffff",
"800000000000","0000000000000000000000000000000000000000000000000000ade6d7ce3b9b","ffffffffffff",
"1000000000000","000000000000000000000000000000000000000000000000000174176b015f4d","1ffffffffffff",
"2000000000000","00000000000000000000000000000000000000000000000000022bd43c2e9354","3ffffffffffff",
"4000000000000","00000000000000000000000000000000000000000000000000075070a1a009d4","7ffffffffffff",
"8000000000000","000000000000000000000000000000000000000000000000000efae164cb9e3c","fffffffffffff",
"10000000000000","00000000000000000000000000000000000000000000000000180788e47e326c","1fffffffffffff",
"20000000000000","00000000000000000000000000000000000000000000000000236fb6d5ad1f43","3fffffffffffff",
"40000000000000","000000000000000000000000000000000000000000000000006abe1f9b67e114","7fffffffffffff",
"80000000000000","000000000000000000000000000000000000000000000000009d18b63ac4ffdf","ffffffffffffff",
"100000000000000","00000000000000000000000000000000000000000000000001eb25c90795d61c","1ffffffffffffff",
"200000000000000","00000000000000000000000000000000000000000000000002c675b852189a21","3ffffffffffffff",
"400000000000000","00000000000000000000000000000000000000000000000007496cbb87cab44f","7ffffffffffffff",
"800000000000000","0000000000000000000000000000000000000000000000000fc07a1825367bbe","fffffffffffffff",
"1000000000000000","00000000000000000000000000000000000000000000000013c96a3742f64906","1fffffffffffffff",
"2000000000000000","000000000000000000000000000000000000000000000000363d541eb611abee","3fffffffffffffff",
"4000000000000000","0000000000000000000000000000000000000000000000007cce5efdaccf6808","7fffffffffffffff",
"8000000000000000","000000000000000000000000000000000000000000000000f7051f27b09112d4","ffffffffffffffff",
"10000000000000000","000000000000000000000000000000000000000000000001a838b13505b26867","1ffffffffffffffff",
"20000000000000000","000000000000000000000000000000000000000000000002832ed74f2b5e35ee","3ffffffffffffffff",
"40000000000000000","00000000000000000000000000000000000000000000000730fc235c1942c1ae","7ffffffffffffffff",
"80000000000000000","00000000000000000000000000000000000000000000000bebb3940cd0fc1491","fffffffffffffffff",
"100000000000000000","","1fffffffffffffffff",
"200000000000000000","349b84b6431a6c4ef1","3fffffffffffffffff",
"400","483","7ff",
]

def main():
    pula = 0
    previous_entropy = None
    for i, pub_key_hex in enumerate(public_keys, start=1):
        if pub_key_hex == "0":
            continue
        pub_key_hex = pub_key_hex.zfill(64)
        pub_key_bits = hex_to_bits(pub_key_hex)
        entropy = calculate_entropy(pub_key_bits)
        if pula % 3 == 0:
            print()
        if previous_entropy is not None:
            if entropy > previous_entropy:
                maiormenor = "Maior"
            elif entropy < previous_entropy:
                maiormenor = "Menor"
            else:
                maiormenor = "Igual"
            print(f"Linha {i} - Chave Pública: {pub_key_hex.upper()} - Entropia ({entropy:.6f} bits) - Tamanho da chave pública ({len(pub_key_bits)}) bits - {maiormenor}")
        else:
            print(f"Linha {i} - Chave Pública: {pub_key_hex.upper()} - Entropia ({entropy:.6f} bits) - Tamanho da chave pública ({len(pub_key_bits)}) bits - Nenhum comparativo anterior")
        previous_entropy = entropy
        pula += 1

    print(calculate_entropy(hex_to_bits('400'.zfill(64))))
    print(calculate_entropy(hex_to_bits('483'.zfill(64))))
    print(calculate_entropy(hex_to_bits('7ff'.zfill(64))))
    print()
    print(calculate_entropy(hex_to_bits('400')))
    print(calculate_entropy(hex_to_bits('483')))
    print(calculate_entropy(hex_to_bits('7ff')))

if __name__ == "__main__":
    main()

Considerações Finais

Este tipo de análise é extremamente útil para programadores, pesquisadores de segurança e entusiastas de criptografia que desejam entender melhor o comportamento estatístico de chaves criptográficas. A entropia é uma métrica importante no desenvolvimento de sistemas mais seguros e no estudo de algoritmos criptográficos eficientes.

Referência

Se quiser aprofundar o estudo sobre manipulação de chaves e criptografia em Python, recomendo visitar a documentação oficial do Python: https://docs.python.org/3/

Marcadores: Airdrop Blogger Cripto IA Jogos Python Script Sistemas

© junho 30, 2025 CanalQb — Python, Scripts, Automação, Airdrops e Criptomoedas | Web3 e Tech na Prática

Comentários