• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Steganografia - ukryta wiadomość w obrazie - zakodowywanie

Cloud VPS
0 głosów
858 wizyt
pytanie zadane 30 kwietnia 2020 w C i C++ przez fortuna Początkujący (310 p.)

Siemano. Muszę napisać program, który zakoduje wiadomość tekstową w obrazie. Obraz jest w formacie tekstowym w odcieniach szarości  - wartości pikseli w zakresie 0-255. Wiadomość ma być zakodowana na ostatnim bicie kazdego piksela(lsb).Muszę użyć unii. Wiem, że muszę każdą literę muszę zamienić na postać binarną, a następnie każdy jej bit zakodowywać w pikselach. Wiem jak dobrać się do pierwszego znaku w pliku i zapisać w nim bit  litery b0, jednak nie wiem jak przejść do kolejnego znaku pliku, by móc zapisać w nim wartość b1.  Jak zrobić by zapisywać kolejno bity pierwszej litery tekstu b0-b7 w pikselach 0-7, bity drugiej litery tekstu b0-b7 w pikselach 8-15 i tak dalej? Czy powinienem utowrzyc 8 zmiennych q0-q7 w unii aby się do tego dobrać?

union bit_set{
        struct {

            unsigned char b0 : 1;
            unsigned char b1 : 1;
            unsigned char b2 : 1;
            unsigned char b3 : 1;
            unsigned char b4 : 1;
            unsigned char b5 : 1;
            unsigned char b6 : 1;
            unsigned char b7 : 1;
        };

        unsigned char a;



}p,q0;

int encode(const char *input,char *txt, const char *output)//input nazwa obrazu, txt tekst, output nazwa wychodzacego pliku
{
    FILE *fp1,*fp2;
    if(input==NULL)
    {
        return 1;
    }
    if(output==NULL)
    {
        return 1;
    }
    if ((fp1=fopen(input,"r"))==NULL)
    {
      return 2;
    }

    if((fp2=fopen(output,"w+"))==NULL)
    {
       fclose(fp1); return 2;
    }
    int b;
    for(unsigned int i=0;i<strlen(txt);++i)
    {
        p.a=*(txt+i);
        while(fscanf(fp1,"%u ",&i)!=EOF)
        {
            b=i;
            q0.a=b;
            fprintf(fp2,"%d",q0.a);
        }
    }
    fclose(fp1);
    fclose(fp2);
return 0;
}

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
1 odpowiedź 1,059 wizyt
pytanie zadane 14 kwietnia 2020 w C i C++ przez Hubertius Bywalec (2,970 p.)
0 głosów
0 odpowiedzi 1,330 wizyt
pytanie zadane 27 maja 2020 w C i C++ przez pozdro600 Początkujący (260 p.)
+1 głos
1 odpowiedź 128 wizyt
pytanie zadane 19 stycznia 2021 w C i C++ przez Modest_8978 Nowicjusz (130 p.)

93,454 zapytań

142,448 odpowiedzi

322,717 komentarzy

62,832 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...