Pular para o conteúdo
🛠️ToolsShed

Calculadora de Entropia de Texto

Calcule a entropia de Shannon e bits por caractere de qualquer texto.

Comece a digitar para calcular a entropia.

Sobre esta ferramenta

A entropia de Shannon é uma medida matemática do conteúdo médio de informação ou aleatoriedade em uma mensagem, calculada em bits. Ao colar um texto nesta calculadora, ela calcula a entropia com base na distribuição de frequência dos caracteres, revelando o quão imprevisível ou desordenado o texto é. Maior entropia indica maior diversidade no uso de caracteres; menor entropia sugere padrões repetitivos. Esta métrica é fundamental para a teoria da informação, criptografia e compressão de dados, ajudando profissionais a entenderem a força e eficiência de seus dados.

Para usar esta ferramenta, simplesmente cole seu texto no campo de entrada e clique em 'Calcular'. A calculadora retorna instantaneamente o valor de entropia de Shannon (em bits por carácter) e exibe os dados de frequência de caracteres individuais. Funciona em qualquer texto—senhas, amostras de documentos, trechos de código ou linguagem natural—e lida com caracteres especiais, espaços em branco e Unicode. Isso a torna uma ferramenta essencial para analistas de segurança avaliando qualidade de senhas, engenheiros avaliando potencial de compressão e pesquisadores estudando padrões de texto.

Lembre-se de que alta entropia por si só não garante boas senhas; entropia reflete diversidade de distribuição, não verdadeira aleatoriedade. A ferramenta assume que cada caractere é igualmente provável (máxima entropia) com base no observado, portanto a verdadeira segurança criptográfica também depende do método de geração. Para textos grandes, a entropia se estabiliza em torno da linha de base de linguagem natural (~1,5 bits por carácter para inglês), enquanto amostras menores podem mostrar maior variabilidade.

Perguntas Frequentes

Implementação de Código

import math
import re

def password_entropy(password: str) -> float:
    """Calculate Shannon entropy in bits for a password."""
    pool = 0
    if re.search(r"[a-z]", password): pool += 26
    if re.search(r"[A-Z]", password): pool += 26
    if re.search(r"[0-9]", password): pool += 10
    if re.search(r"[^a-zA-Z0-9]", password): pool += 32  # common special chars
    if pool == 0:
        return 0.0
    return len(password) * math.log2(pool)

def shannon_entropy(text: str) -> float:
    """True Shannon entropy based on character frequency."""
    from collections import Counter
    counts = Counter(text)
    n = len(text)
    return -sum((c / n) * math.log2(c / n) for c in counts.values())

# Examples
print(f"'password' entropy: {password_entropy('password'):.1f} bits")    # ~37.6
print(f"'P@ssw0rd!' entropy: {password_entropy('P@ssw0rd!'):.1f} bits")   # ~52.5
print(f"Random 16-char (all types): {password_entropy('aB3!xK9#mN2@pQ7^'):.1f} bits") # ~104.8

# Strength rating
def strength(bits: float) -> str:
    if bits < 28: return "Very Weak"
    if bits < 36: return "Weak"
    if bits < 60: return "Reasonable"
    if bits < 80: return "Strong"
    return "Very Strong"

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.