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.