Cacher un texte dans une image

Cacher un texte dans une image - Java - Programmation

Marsh Posté le 03-05-2015 à 19:29:20    

Bonjour / bonsoir
 
Pour mon projet de fin d'année (je dois le rendre le 13), je dois réaliser une stéganographie, cacher du texte dans une image (j'ai déjà réaliser l'image caché dans une autre), le code est commenté par mon prof, le problème c'est que je n'ai pas le temps de reprendre l'algo à zéro sachant que je suis un peu perdu malgré toutes mes recherches et tentatives de résolution, j'ai besoin de conseils rapidement, si possible, merci d'avance à ceux qui me répondront :)
Je précise que je me sert de la classe ISNImage, une classe que nous a refilé le prof en début d'année et qui nous évite de coder tous les BufferedImage etc, je peux la poster si besoin.
 
Voici donc mon code :
 

Code :
  1. public static ISNImage code(ISNImage img, String message){
  2.         // Affectation des dimensions
  3.         int largeur = img.largeur();
  4.         int hauteur = img.hauteur();
  5.          
  6.         // on crée une image img1 de même dimension que img (image couverture)
  7.         ISNImage img1 = new ISNImage(largeur,hauteur);
  8.          
  9.         // Conversion du message en binaire
  10.         message = "Je suis un texte cache";
  11.         String chaine = "";
  12.         for (int i = 0 ; i < message.length() ; i++){
  13.             int ascii = (new Character(message.charAt(i))).hashCode();
  14.             String binaryString = Integer.toBinaryString(ascii);
  15.             chaine += binaryString;
  16.         }
  17.          // cette partie là ne sert visiblement à rien, puisque tu n'utilises pas la valeur de chaîne dans la suite.
  18.        
  19.         for (int j = 0 ; j < hauteur && j < message.length() ; j++){
  20.             for (int i = 0 ; i < largeur && i < message.length() ; i++){
  21.             // c'est ici le problème, les conditions d'arrêt des boucles "for" font n'importe quoi!
  22.                     int[] rgb = img.getPixel(i, j);
  23.                     int rouge = rgb[0] & 240; // On remet à zéro les 4 bits de droite pour le canal rouge
  24.                     int vert = rgb[1]; // Là non car on ne va rien cacher de dans
  25.                     int bleu = rgb[2] & 240; // Idem que pour le canal rouge
  26.                      
  27.                      
  28.                     for(i = 0 ; i < message.length() ; i++){ // on parcourt la chaine caractere par caractere
  29.                     // tu caches donc la totalité de ton message dans une seule colonne puisque j garde une valeur constante dans cette boucle,
  30.                     // donc là aussi, gros problème : le ième caractère du message doit être caché dans un pixel de coordonnées (x;y)
  31.                     // Il faut que tu trouves la bonne relation entre i et (x;y). y n'est certainement pas constamment égal à j
  32.                         char first = message.charAt(i);
  33.                          
  34.                         int rouge1 = first >> 4;
  35.                         int vert1 = first;
  36.                         int bleu1 = first >> 4;
  37.                      
  38.                         int r = rouge | rouge1;
  39.                         int v = vert | vert1;
  40.                         int b = bleu | bleu1;
  41.                      
  42.                         img1.putPixel(i, j,r,v,b);
  43.                          
  44.                     }
  45.  
  46.                      
  47.                 }
  48.             }
  49.         return img1;
  50.     }
  51. Il te faut reprendre l'algorithme à partir de zéro ... bon courage

Reply

Marsh Posté le 03-05-2015 à 19:29:20   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed