Thuật toán LSB dựa trên tần suất xuất hiện của bit 0 và 1 trong file ảnh gốc và thông điệp cần mã hóa để thực hiện việc giấu tin.
Trong thuật toán, bit cuối cùng của mỗi byte trong ảnh gốc được thay thế bằng giá trị 0 hoặc 1 tùy thuộc vào bit tương ứng trong thông điệp mã hóa. Nếu bit là 0, thuật toán giữ nguyên, còn nếu bit là 1, thuật toán sẽ thay đổi bit này trong ảnh thành 1.
Bạn đang xem: Thuật toán LSB (Least Significant Bit)
Để giấu thông điệp vào ảnh, ta cần một ảnh gốc (cover image) không mất mát thông tin. Khi sử dụng ảnh màu 24-bit, ta có thể sử dụng từng bit của mỗi màu R, G, B để giấu tin, cho phép mã hóa nhiều thông điệp hơn.
Đầu vào: Ảnh gốc (cover image), thông tin cần giấu và mã giảu tin.
Đầu ra: Ảnh giấu tin (stego image) chứa thông tin thủy ấn. Ảnh giấu tin có sự thay đổi không đáng kể so với ảnh gốc.
Để lưu giữ lượng thông tin lớn và không làm thay đổi màu sắc của ảnh quá đáng kể, ta sử dụng file ảnh bitmap 24-bit. Mỗi pixel trong ảnh sử dụng 3 màu R, G, B, với mỗi màu sử dụng 8 bit. Tuy nhiên, thuật toán chỉ sử dụng bit cuối cùng của màu xanh da trời để giấu thông tin.
Xem thêm : Tỉ mỉ, cẩn thận là gì? vì sao nhà tuyển dụng nào cũng coi trọng?
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
Thuật toán nhúng:
– Bước 1: Tính tổng số byte cần dùng để mã hóa đoạn văn bản. Lưu giá trị này vào biến S.
– Bước 2: Đọc các kí tự từ file văn bản và chuyển giá trị ASCII của chúng sang dạng nhị phân 8 bit, lưu vào một mảng A (A[0] là LSB).
Xem thêm : Đổ vỏ là gì? ý nghĩa câu thằng ăn ốc người đổ vỏ là gì?
– Bước 3: Tính tổng số lần xuất hiện của bit 0 và 1 trong mỗi byte, lưu vào biến i0 và i1.
– Bước 4: Lặp lại từ bước 1 đến bước 4 cho tới khi kết thúc toàn bộ văn bản.
– Bước 5: Đọc giá trị RGB của mỗi pixel trong ảnh gốc.
– Bước 6: Đọc bit cuối cùng của mỗi pixel. Trong ảnh RGB 24 bit, đọc bit cuối cùng của màu xanh da trời (Blue).
– Bước 7: Kiểm tra giá trị bit này (0 hoặc 1) và tính tổng số lần xuất hiện của các bit này trong S pixel, lưu vào hai biến c0 và c1.
– Bước 8: Lặp lại từ bước 5 đến bước 7 [8*S] lần. Đây là số pixel cần đọc để giấu toàn bộ các byte của thông điệp.
– Bước 9: Nếu [(c0 > c1) và (i0 > i1)] hoặc [(c1 > c0) và (i1 > i0)], đặt flag = 0, ngược lại đặt flag = 1.
– Bước 10: Ghi giá trị của flag vào phía bên trái của bit cuối cùng của pixel đầu tiên trong ảnh giấu.
– Bước 11: Mở ảnh gốc ở chế độ đọc. Tạo một ảnh giấu giống như ảnh gốc ở chế độ ghi.
– Bước 12: Đọc header của file gốc và ghi thông tin này lên ảnh giấu. Đọc giá trị RGB của mỗi pixel trong ảnh gốc.
Xem thêm : Tỉ mỉ, cẩn thận là gì? vì sao nhà tuyển dụng nào cũng coi trọng?
Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên
– Bước 13: Đọc bit stream của dữ liệu. Nếu flag = 0, giữ nguyên bit của dữ liệu và ghi lên bit cuối cùng của màu xanh của pixel. Ngược lại, nếu flag = 1, đảo bit của dữ liệu rồi ghi lên pixel (0 thành 1 hoặc 1 thành 0). Ghi pixel này vào ảnh giấu.
– Bước 14: Nếu tất cả các LSB đã được sửa đổi thành công, ghi các bit còn lại của các pixel vào ảnh giấu. Ngược lại, quay lại bước 13.
Thuật toán trích xuất:
Bước 1: Mở ảnh giấu dưới chế độ đọc.
Bước 2: Đọc bit liền kề bit cuối của pixel đầu tiên trong ảnh. Dựa trên giá trị này, đặt flag là 0 hoặc 1.
Bước 3: Đọc từng pixel của ảnh giấu.
Bước 4: Nếu flag = 0, đọc bit cuối cùng của mỗi pixel và thêm vào một mảng. Ngược lại, nếu flag = 1, đảo bit rồi thêm vào mảng.
Bước 5: Đọc mỗi 8 pixel theo cách trên, sau đó chuyển nội dung của mỗi 8 phần tử của mảng sang hệ thập phân để được giá trị ASCII của kí tự đã được mã hóa.
Bước 6: Nếu chưa gặp kết thúc file (EOF), in các kí tự đã giải mã và quay lại bước 3.
Nguồn: https://stamboom-boden.com
Danh mục: Là Gì