Kalkulator Entropi Teks
Hitung entropi Shannon dan bit per karakter dari teks apapun.
Mulai mengetik untuk menghitung entropi.
Tentang alat ini
Entropi Shannon adalah ukuran matematis dari rata-rata konten informasi atau keacakan dalam pesan, dihitung dalam bit. Ketika Anda menempel teks ke dalam kalkulator ini, ia menghitung entropi berdasarkan distribusi frekuensi karakter, mengungkapkan seberapa tidak dapat diprediksi atau berantaknya teks tersebut. Entropi lebih tinggi menunjukkan keragaman yang lebih besar dalam penggunaan karakter; entropi lebih rendah menunjukkan pola yang berulang. Metrik ini mendasar bagi teori informasi, kriptografi, dan kompresi data, membantu para profesional memahami kekuatan dan efisiensi data mereka.
Untuk menggunakan alat ini, cukup tempel teks Anda ke dalam kolom input dan klik 'Hitung'. Kalkulator langsung mengembalikan nilai entropi Shannon (dalam bit per karakter) dan menampilkan data frekuensi karakter individual. Ia bekerja pada teks apa pun—kata sandi, sampel dokumen, cuplikan kode, atau bahasa alami—dan menangani karakter khusus, spasi, dan Unicode. Ini menjadikannya alat penting bagi analis keamanan yang mengevaluasi kualitas kata sandi, insinyur yang menilai potensi kompresi, dan peneliti yang mempelajari pola teks.
Ingat bahwa entropi tinggi saja tidak menjamin kata sandi yang baik; entropi mencerminkan keragaman distribusi, bukan keacakan sejati. Alat ini mengasumsikan setiap karakter memiliki kemungkinan yang sama (entropi maksimal) berdasarkan apa yang diamati, sehingga keamanan kriptografi sejati juga bergantung pada metode generasi. Untuk teks besar, entropi menstabilkan di sekitar baseline bahasa alami (~1,5 bit per karakter untuk bahasa Inggris), sementara sampel yang lebih pendek mungkin menunjukkan variabilitas yang lebih tinggi.
Pertanyaan yang Sering Diajukan
Implementasi Kode
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.