Một cách định lượng phổ biến để phát hiện khóa bí mật / mật khẩu yếu (dễ đoán) là tính entropy Shannon của chuỗi ký tự tạo nên nó — entropy càng thấp thì chuỗi càng có tính lặp lại, càng dễ bị tấn công.
Cho một chuỗi S độ dài n. Gọi pc là tần suất xuất hiện tương đối của ký tự c trong S (số lần xuất hiện chia cho n). Entropy trên mỗi ký tự được định nghĩa:
H=−∑cpclog2(pc)
và entropy tổng của toàn chuỗi là Htotal=H×n (đơn vị: bit).
Ví dụ: S= abcd (4 ký tự khác nhau, mỗi ký tự xuất hiện với xác suất 1/4) → H=−4×41log241=2 bit/ký tự, Htotal=2×4=8 bit.
Một dòng duy nhất chứa chuỗi S (có thể rỗng, có thể chứa khoảng trắng bên trong), độ dài tối đa 1000 ký tự ASCII in được. Đọc toàn bộ dòng (không tách theo khoảng trắng).
In ra hai dòng:
H_PER_CHAR: x với x là H làm tròn 4 chữ số thập phân.H_TOTAL: y với y là Htotal làm tròn 4 chữ số thập phân.Nếu S rỗng, in ra H_PER_CHAR: 0.0000 và H_TOTAL: 0.0000.
Ví dụ: input abcd → output:
H_PER_CHAR: 2.0000
H_TOTAL: 8.0000
Ví dụ:
Đầu vào:
abcd
Đầu ra:
H_PER_CHAR: 2.0000
H_TOTAL: 8.0000
Đầu vào:
aaaa
Đầu ra:
H_PER_CHAR: 0.0000
H_TOTAL: 0.0000
Đang tải editor...