8 bits = 1 byte
1 byte biểu diễn được 2^8 = 256 "ký tự"
4 bits biểu diễn được 2^4 = 16 "ký tự".
Một ký tự thuộc hệ hexadecimal (hệ số 16) là một ký tự trong khoảng: 0123456789abcdef
Vậy chỉ cần 4 bits là có thể biểu diễn 1 ký tự hex, 2 ký tự hex = 1 byte
MD5 là gì?
MD5 là tên một thuật toán hash được sử dụng rộng rãi, được định nghĩa đầy đủ trong rfc1321.
Thuật toán hash hiểu nôm na là thuật toán
nhận đầu vào có kích thước tuỳ ý nhưng trả về đầu ra với kích thước cố định. Các hàm hash dùng trong bảo mật thường có thêm tính chất: với 2 đầu vào khác nhau sẽ luôn cho ra 2 đầu ra khác nhau.
Giá trị được trả về bởi hash function gọi là "hash value", "hash codes", "hash sums", hay "hash".
Ví dụ:
$ printf "familug" | md5sum
b2bc686c91b99bd9cd92e70cdeaadf40 -
$ printf "FAMILUG" | md5sumVí dụ trên cho thấy giá trị MD5 của 2 string khác nhau là khác nhau, mã MD5 (MD5 checksum) có độ dài là 32 ký tự.
60e29026b93e27f815e73123efedad31 -
$ printf "FAMILUG" | md5sum | cut -d' ' -f1 | tr -d '\n' | wc -c
32
Chú ý các ký tự này đều trong khoảng [0-9a-f] tức đều là biểu diễn dạng hexadecimal của giá trị ẩn dưới đó.