Скрытие конфиденциальной информации при помощи стеганографии

Автор работы: Пользователь скрыл имя, 08 Апреля 2011 в 21:25, курсовая работа

Описание работы

Актуальность проблемы информационной безопасности постоянно растет и стимулирует поиск новых методов защиты информации. Современные компьютерные технологии, прогресс в области глобальных компьютерных сетей и средств мультимедиа обеспечивает возможность разработки и реализации новых методов, предназначенных для обеспечения компьютерной информационной безопасности. Компьютерные технологии придали новый импульс развитию и совершенствованию нового направления в области защиты информации - компьютерной стеганографии.

Содержание работы

Введение…………………………………………………………………………...3
Основная часть………………………………………………………….….6
1.Теоретическое обоснование……………………………………………..6
1.1 Основные положения стеганографии……………………….....6
1.2 Встраивание сообщений в незначащие элементы контейнера.14
1.3 Стеганографические протоколы……………………………....15
1.4 Практические вопросы встраивания данных………................17
1.5 Практические оценки стойкости стегосистем……………..…18
1.6 Скрытие данных в неподвижных изображениях……...……..19
1.6.1 Обзор алгоритмов встраивания информации в изображения………………………………………………………..20
II. Практическая часть……………………………………………………...23
1. Анализ технического задания………………………………………..23
Актуальность программного продукта………………………23
Назначение программного продукта……………………….....24
Принцип работы программного продукта………………..…..24
Сфера применения разработанного программного продукта.26
2.Обоснование выбора средств разработки……………………………..26
3.Модульная структура программы……………………………………..28
4.Разработка форм входных и выходных данных………………………29
4.1Входные данные……………………………………………...…29
4.2Выходные данные………………………………………………29
5.Теститрование программного продукта………………………………29
5.1Тестирование выполнения основных функций программы…….29
6.Разработка сопроводительных документов…………………………...30
6.1Описание руководства программиста………………………..…...30
6.2Описание руководства пользователя……………………………..30
ЗАКЛЮЧЕНИЕ……………………………………………………..…….32
СПИСОК ЛИТЕРАТУРЫ………………………………………………..34

Файлы: 1 файл

Смоленский промышленно.doc

— 784.00 Кб (Скачать файл)

         Memo1.PasteFromClipboard;

       end; 

       procedure TfrmStenograf.N30Click(Sender: TObject);

       begin

         Memo1.SelectAll;

       end; 

       procedure TfrmStenograf.N32Click(Sender: TObject); //загрузка картинки

       Var i, j: Word;

         a: TColor;

         r, g, b: byte;

       begin

         if OpenPictureDialog1.Execute then

         with Image1 do begin

           Visible:= False;

           Picture.LoadFromFile(OpenPictureDialog1.FileName);

           if Picture.Bitmap.PixelFormat < pf16bit then

             ShowMessage('Требуется большая глубина цвета')

           else

             for i:= 0 to Width-1 do

               for j:= 0 to Height-1 do begin

                 a:= Canvas.Pixels[i, j];

                 r:= GetRValue(a);

                 if r = 255 then r:= 254;

                 g:= GetGValue(a);

                 if g = 255 then g:= 254;

                 b:= GetBValue(a);

                 if b = 255 then b:= 254;

                 Canvas.Pixels[i, j]:= RGB(r, g, b);

               end;

           Visible:= True;

           Memo1.MaxLength:= Image1.Height-5;

         end;

       end; 

       procedure TfrmStenograf.N33Click(Sender: TObject);

       begin

         if SavePictureDialog1.Execute then

           Image1.Picture.SaveToFile(SavePictureDialog1.FileName);

       end; 

       procedure TfrmStenograf.N38Click(Sender: TObject);  //вшить информацию в рисунок

       Type TColoreArr= array[1..9] of byte;

       Var i: Word;

         r, g, b: Integer;

         j: byte;

         Str: String;

         RedArr, GreenArr, BlueArr: TColoreArr;

         a: TColor;

       begin

         X:= GetStart(Edit1.Text);

         Y:= 2;

         Str:= Memo1.Text;

         if length(Str) > Image1.Height-5 then ShowMessage('Маленькая картинка') else begin

           i:= 1;

           with Image1.Canvas do begin

             while length(Str) mod 3 <> 0 do Str:= Str + ' ';

             Pixels[x, y]:= RGB(length(Str) div 65536, (length(Str) mod 65536) div 255, (length(Str) mod 65536) mod 255);  //записали кол-во символов

             repeat

               X:= 2 + (106*X+1230) mod (Image1.Width-3); //генератор  псевдослучайной  последовательности

               Y:= Y + 3; //через три  пикселя, для обеспечения  размытия 

               //размоем точки  методотом луча

               a:= Pixels[X-1, Y];

               RedArr[1]:= GetRValue(a);

               GreenArr[1]:= GetGValue(a);

               BlueArr[1]:= GetBValue(a);

               a:= Pixels[X-1, Y+1];

               RedArr[2]:= GetRValue(a);

               GreenArr[2]:= GetGValue(a);

               BlueArr[2]:= GetBValue(a);

               a:= Pixels[X, Y+1];

               RedArr[3]:= GetRValue(a);

               GreenArr[3]:= GetGValue(a);

               BlueArr[3]:= GetBValue(a);

               a:= Pixels[X+1, Y+1];

               RedArr[4]:= GetRValue(a);

               GreenArr[4]:= GetGValue(a);

               BlueArr[4]:= GetBValue(a);

               a:= Pixels[X+1, Y];

               RedArr[5]:= GetRValue(a);

               GreenArr[5]:= GetGValue(a);

               BlueArr[5]:= GetBValue(a);

               a:= Pixels[X+1, Y-1];

               RedArr[6]:= GetRValue(a);

               GreenArr[6]:= GetGValue(a);

               BlueArr[6]:= GetBValue(a);

               a:= Pixels[X, Y-1];

               RedArr[7]:= GetRValue(a);

               GreenArr[7]:= GetGValue(a);

               BlueArr[7]:= GetBValue(a);

               a:= Pixels[X-1, Y-1];

               RedArr[8]:= GetRValue(a);

               GreenArr[8]:= GetGValue(a);

               BlueArr[8]:= GetBValue(a);

               RedArr[9]:= ord(Str[i]);

               GreenArr[9]:= ord(Str[i+1]);

               BlueArr[9]:= ord(Str[i+2]);

               r:= 0;     //читаем информацию из соседних пикселей

               g:= 0;

               b:= 0;

               for j:= 1 to 9 do begin

                 r:= (r + RedArr[j]);

                 g:= (g + GreenArr[j]);

                 b:= (b + BlueArr[j]);

               end;

               j:=1;

               while r mod 9 <> 0 do begin//добавим  соседние точки  до кратности 9

                 Case j of

                   1: begin

                        RedArr[1]:= RedArr[1]+1;

                        Pixels[X-1, Y+1]:= RGB(RedArr[1], GreenArr[1], BlueArr[1]);

                        j:= j+1;

                     end;

                   2: begin

                        RedArr[2]:= RedArr[2]+1;

                        Pixels[X-1, Y]:= RGB(RedArr[2], GreenArr[2], BlueArr[2]);

                        j:= j+1;

                     end;

                   3: begin

                        RedArr[3]:= RedArr[3]+1;

                        Pixels[X, Y+1]:= RGB(RedArr[3], GreenArr[3], BlueArr[3]);

                        j:= j+1;

                     end;

                   4: begin

                        RedArr[4]:= RedArr[4]+1;

                        Pixels[X+1, Y+1]:= RGB(RedArr[4], GreenArr[4], BlueArr[4]);

                        j:= j+1;

                     end;

                   5: begin

                        RedArr[5]:= RedArr[5]+1;

                        Pixels[X+1, Y]:= RGB(RedArr[5], GreenArr[5], BlueArr[5]);

                        j:= j+1;

                     end;

                   6: begin

                        RedArr[6]:= RedArr[6]+1;

                        Pixels[X+1, Y-1]:= RGB(RedArr[6], GreenArr[6], BlueArr[6]);

                        j:= j+1;

                     end;

                   7: begin

                        RedArr[7]:= RedArr[7]+1;

                        Pixels[X, Y-1]:= RGB(RedArr[7], GreenArr[7], BlueArr[7]);

                        j:= j+1;

                     end;

                   8: begin

                        RedArr[8]:= RedArr[8]+1;

                        Pixels[X-1, Y-1]:= RGB(RedArr[8], GreenArr[8], BlueArr[8]);

                        j:= j+1;

                     end;

                 end;

                 r:= r+1;

               end;

               j:=1;

               while g mod 9 <> 0 do begin

                 Case j of

                   1: begin

                        GreenArr[1]:= GreenArr[1]+1;

                        Pixels[X-1, Y+1]:= RGB(RedArr[1], GreenArr[1], BlueArr[1]);

                        j:= j+1;

                     end;

                   2: begin

                        GreenArr[2]:= GreenArr[2]+1;

                        Pixels[X-1, Y]:= RGB(RedArr[2], GreenArr[2], BlueArr[2]);

                        j:= j+1;

                     end;

                   3: begin

                        GreenArr[3]:= GreenArr[3]+1;

                        Pixels[X, Y+1]:= RGB(RedArr[3], GreenArr[3], BlueArr[3]);

                        j:= j+1;

                     end;

                   4: begin

                        GreenArr[4]:= GreenArr[4]+1;

                        Pixels[X+1, Y+1]:= RGB(RedArr[4], GreenArr[4], BlueArr[4]);

                        j:= j+1;

                     end;

                   5: begin

                        GreenArr[5]:= GreenArr[5]+1;

                        Pixels[X+1, Y]:= RGB(RedArr[5], GreenArr[5], BlueArr[5]);

                        j:= j+1;

                     end;

                   6: begin

                        GreenArr[6]:= GreenArr[6]+1;

                        Pixels[X+1, Y-1]:= RGB(RedArr[6], GreenArr[6], BlueArr[6]);

                        j:= j+1;

                     end;

                   7: begin

                        GreenArr[7]:= GreenArr[7]+1;

                        Pixels[X, Y-1]:= RGB(RedArr[7], GreenArr[7], BlueArr[7]);

                        j:= j+1;

                     end;

                   8: begin

                        GreenArr[8]:= GreenArr[8]+1;

                        Pixels[X-1, Y-1]:= RGB(RedArr[8], GreenArr[8], BlueArr[8]);

                        j:= j+1;

                      end;

                 end;

                 g:= g+1;

               end;

               j:=1;

               while b mod 9 <> 0 do begin

                 Case j of

                   1: begin

                        BlueArr[1]:= BlueArr[1]+1;

                        Pixels[X-1, Y+1]:= RGB(RedArr[1], GreenArr[1], BlueArr[1]);

                        j:= j+1;

                     end;

                   2: begin

                        BlueArr[2]:= BlueArr[2]+1;

                        Pixels[X-1, Y]:= RGB(RedArr[2], GreenArr[2], BlueArr[2]);

                        j:= j+1;

                     end;

                   3: begin

                        BlueArr[3]:= BlueArr[3]+1;

Информация о работе Скрытие конфиденциальной информации при помощи стеганографии