CS-107 Mini-proiect 1 Steganography - Descărcare gratuită PDF

CS-107: Mini-proiect 1 Steganography B. Goullet, B. Jobstmann, J. Sam Cuprins 1 Prezentare 3 2 Structură și cod furnizat 4 3 Codificare directă 6 3.1 Transformare în imagine binară. 6 3.1.1 Codificarea unui pixel. 7 3.1.2 Codificarea imaginii complete. 8 3.1.3 Teste. 9 3.2 Ascunderea imaginii. 9 3.2.1 Inlay. 9 3.2.2 Dezvăluirea. 10 3.2.3 Exemplu. 10 3.2.4 Teste. 10 4 Codificare text 11 4.1 Conversia șirului de biți și invers. 11 4.1.1 Tabel întregi la biți. 11 4.1.2 Șir la matrice de booleeni, prin matrice de numere întregi. 12 4.1.3 Tabel de biți la tabel de numere întregi. 12 4.1.4 Matrice de numere întregi la String. 12 4.2 Disimularea și divulgarea. 12 4.2.1 Din tabelul de biți. 13 4.2.2 Din șir. 13 4.3 Teste. 14 1

steganography

5 Codificare în spirală 15 5.1 Ascunderea în spirală. 16 5.1.1 Transformarea imaginii binare într-o matrice unidimensională. 16 5.1.2 Codificare. 17 5.2 Dezvăluirea unui mesaj codat în spirală. 17 5.2.1 Transformarea matricei unidimensionale într-o imagine binară. 17 5.2.2 Dezvăluirea imaginii. 17 5.3 Teste. 18 6 Complement teoretic Culori, pixeli și binare 19 6.1 Reprezentarea binară a numerelor întregi. 20 6.2 Referințe. 20 2

getred (culoare); // -> 240 (0xF0) getgreen (culoare); // -> 15 (0x0F) getblue (culoare); // -> 85 (0x55) int gri = getgray (culoare); // -> 113 getbw (gri, 128); // -> false // Codificăm culorile getrgb (0, 0, 255); // -> 255 (0 x0000ff) getrgb (127); // -> 8355711 (0 x7f7f7f) getrgb (adevărat); // -> 16777215 (0 xffffff) // Rețineți că componentele sunt constrânse în [0, 255] getrgb (-175, 0, 255); // -> 255 (0 x0000ff) getrgb (-255); // -> 0 (0x000000) 3.1.2 Codarea imaginii complete Folosind funcțiile anterioare, implementați togray (int [] [] imagine) care convertește o imagine dată în format RGB într-o imagine în tonuri de gri (int [] []); tobw (int [] [] gri, prag int) care convertește o imagine în tonuri de gri într-o imagine alb-negru binar (folosim ca tip de întoarcere un boolean [] [] unde intrările în fals reprezintă negru și cel în alb adevărat ). torgb (boolean [] [] bw) care convertește în cealaltă direcție o imagine binară într-o imagine în format RGB torgb (int [] [] gri) și care face același lucru pentru o imagine în tonuri de gri. Pentru a face acest lucru, trebuie să creați o matrice de dimensiunea potrivită și să utilizați getgray, getbw sau getrgb pentru fiecare pixel. // O imagine color 2x2 int [] [] imagine = <, >; // Îl convertim în gri int [] [] gri = togray (imagine); // -> < //, // // >; // Ne întoarcem la RGB int [] [] înapoi = torgb (gri); 8

Pentru a implementa embedbwimage (int [] [] cover, mesaj boolean [] []), va trebui să codificați embedinlsb (valoarea int, m booleană) care ia un pixel RGB (valoare) și o valoare m booleană și returnează acel pixel cu bitul său din dreapta setat la 0 dacă m este fals sau la 1 dacă este adevărat. De exemplu, puteți utiliza operatori binari, cum ar fi &, operatorul și binarul (consultați complementele, precum și diapozitivele prezentate în clasă). 3.2.2 Descoperire Pentru a putea decoda imaginea ascunsă, veți implementa apoi revelbwimage (int [] [] cover) care formează o imagine binară citind valorile celui mai puțin semnificativ (cel mai dreapta) bit al fiecărui pixel din Coperta imaginii RGB. Ca și înainte, veți implementa o metodă suplimentară getlsb (valoare int) care, dată fiind o valoare RGB pixel, returnează adevărat dacă ultimul său bit este 1 și fals dacă este 0. 3.2.3 Exemplu int [] [] cover = Helper . read („cover.jpg”); int [] [] mesaj = Helper.read ("mesaj.jpg"); int [] [] gri = ImageMessage. togray (mesaj); boolean [] [] bw = ImageMessage. tobw (gri, 240); int [] [] ascuns = Steganography. embedbwimage (copertă, bw); // returnează mediul care conține mesajul ascuns boolean [] [] decodat = Steganography. a dezvălui imaginea (ascunsă); 3.2.4 Teste Pentru această parte, procedați ca și pentru cea anterioară, dar cu fișierul LinearEncodingTests.java. În acest moment al proiectului, testele getlsbtest, embedinlsbtest, developbwimagetest și embedbwimagetest ar trebui să fie verzi. Pentru a testa grafic această parte, puteți utiliza programul furnizat în MainImages.java, pe care, desigur, îl puteți mări după cum doriți. 10