Tiểu luận Giấu thông tin trong ảnh sử dụng phương pháp Steganography (dấu tin, viết phủ) (Có Source Code)

4 437 4
Tiểu luận Giấu thông tin trong ảnh sử dụng phương pháp Steganography (dấu tin, viết phủ) (Có Source Code)

Đang tải... (xem toàn văn)

Thông tin tài liệu

Steganography (dấu tin, viết phủ) là lĩnh vực nghiên cứu việc nhúng các mẩu tin mật vào một môi trường phủ. Trong quá trình dấu tin để tăng bảo mật có thể người ta dùng một khoá viết mật khi đó người ta nói về Intrinsic Steganography (dấu tin có xử lý). Khi đó để giải mã người dùng cũng phải có khoá viết mật đó. Chú ý rằng khoá này không phải là khoá dùng để lập mật mã mẩu tin, ví dụ nó có thể là khoá để sinh ra hàm băm phục vụ rải tin vào môi trường phủ. Ngược lại nếu không dùng khoá viết mật thì người ta chỉ dấu tin đơn thuần vào môi trường phủ thì khi đó người ta nói về Pure Steganography (dấu tin đơn thuần).

Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 Giấu thông tin trong ảnh sử dụng phương pháp Steganography (dấu tin, viết phủ) I. Giới thiệu chung Steganography (dấu tin, viết phủ) là lĩnh vực nghiên cứu việc nhúng các mẩu tin mật vào một môi trường phủ. Trong quá trình dấu tin để tăng bảo mật có thể người ta dùng một khoá viết mật khi đó người ta nói về Intrinsic Steganography (dấu tin có xử lý). Khi đó để giải mã người dùng cũng phải có khoá viết mật đó. Chú ý rằng khoá này không phải là khoá dùng để lập mật mã mẩu tin, ví dụ nó có thể là khoá để sinh ra hàm băm phục vụ rải tin vào môi trường phủ. Ngược lại nếu không dùng khoá viết mật thì người ta chỉ dấu tin đơn thuần vào môi trường phủ thì khi đó người ta nói về Pure Steganography (dấu tin đơn thuần). Ý tưởng xây dựng thuật toán: + Giấu tin: đọc 1 byte từ khối key, lưu chúng vào currentKey; đọc 1 byte từ khối tin cần giấu và sử dụng phép XOR đối với chúng, lưu lại trong currentByte; di chuyển key pixels sang phải, hoặc xuống dưới nếu cần thiết; tô màu cho pixels; set giá trị R,G, hay B cho currentByte +Đọc tin: đọc 1 byte từ phân lớp key; tính toán vị trí của pixel kế tiếp; nhận màu từ pixel, viết giá trị R,G,B vào lớp ảnh messageLength = (Int32)messageStream.Length; // String colorValue = messageLength.ToString("x"); colorValue = UnTrimColorString(colorValue, 6); int red = Int16.Parse(colorValue.Substring(0,2), NumberStyles.HexNumber); int green = Int16.Parse(colorValue.Substring(2,2), NumberStyles.HexNumber); int blue = Int16.Parse(colorValue.Substring(4,2), NumberStyles.HexNumber); pixelColor = Color.FromArgb(red, green, blue); bitmap.SetPixel(0,0, pixelColor); Read byte from the key: //Bắt đầu với pixel thứ 2 Point pixelPosition = new Point(1,0); //Loop for(int messageIndex=0; messageIndex<messageLength; messageIndex++){ //repeat the key, if it is shorter than the message Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 if(keyStream.Position == keyStream.Length){ keyStream.Seek(0, SeekOrigin.Begin); } //Get the next pixel-count from the key, use "1" if it's 0 currentKeyByte = (byte)keyStream.ReadByte(); currentStepWidth = (currentKeyByte==0) ? (byte)1 : currentKeyByte; //jump to reverse-read position and read from the end of the stream keyPosition = keyStream.Position; keyStream.Seek(keyPosition, SeekOrigin.End); currentReverseKeyByte = (byte)keyStream.ReadByte(); //jump back to normal read position keyStream.Seek(keyPosition, SeekOrigin.Begin); //Perform line breaks, if current step is wider than the image while(currentStepWidth > bitmapWidth){ currentStepWidth -= bitmapWidth; pixelPosition.Y++; } //Di chuyển vị trí if((bitmapWidth - pixelPosition.X) < currentStepWidth){ pixelPosition.X = currentStepWidth - (bitmapWidth - pixelPosition.X); pixelPosition.Y++; }else{ pixelPosition.X += currentStepWidth; } get the pixel and put the message-byte into one color component: //Get color of the "clean" pixel pixelColor = bitmap.GetPixel(pixelPosition.X, pixelPosition.Y); //To add a bit of confusion, xor the byte with //a byte read from the keyStream int currentByte = messageStream.ReadByte() ^ currentReverseKeyByte; if(useGrayscale){ pixelColor = Color.FromArgb(currentByte, currentByte, currentByte); }else{ //Change one component of the color to the message-byte SetColorComponent(ref pixelColor, currentColorComponent, currentByte); //Rotate color components currentColorComponent = (currentColorComponent==2) ? 0 : (currentColorComponent+1); } } //kết thúc vòng for, chuyển sang byte kế tiếp II. Mô tả chương trình Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 III. Ưu nhược điểm của chương trình Ưu điểm : khả năng bảo mật tương đối cao, người ngoài khi biết được file ảnh giấu tin cũng khó mà có thể đọc tin được vì không rõ key sử dụng là text hay file, khi key là file thì không rõ file giữ key là file nào Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 Nhược điểm : chất lượng ảnh còn kém, dễ phát hiện được bằng mắt thường, dung lượng giấu tin nhỏ IV. Tài liệu tham khảo Tham khảo một số code của trang web http://www.codeproject.com . Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 Giấu thông tin trong ảnh sử dụng phương pháp Steganography (dấu tin,. messageIndex++){ //repeat the key, if it is shorter than the message Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 if(keyStream.Position == keyStream.Length){ keyStream.Seek(0,. thúc vòng for, chuyển sang byte kế tiếp II. Mô tả chương trình Báo cáo bài tập lớn môn học Học viên: Đỗ Hải Long Xử lý ảnh Lớp: Tin học 1 – k40 III. Ưu nhược điểm của chương trình Ưu điểm : khả

Ngày đăng: 17/10/2014, 15:29

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan