Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 15.05.2020
Сообщений: 12

При расшифровке программа выдает неправильный текст

06.04.2021, 21:30. Показов 967. Ответов 5

Студворк — интернет-сервис помощи студентам
Программа для шифрования текста в изображении


при дешифровке выдает неправильный текст


Подскажите пожалуйста из-за чего это может быть?
P.S. код не мой
Сам проект
Steganography111.zip

кнопка открытия файла
C#
1
2
3
4
5
6
7
8
9
10
11
12
 private void button1_Click(object sender, EventArgs e)
        {
            OpenFileDialog openDialog = new OpenFileDialog();
            openDialog.Filter = "Image Files (*.png, *.jpg) | *.png; *.jpg";
            openDialog.InitialDirectory = @"C:\";
 
            if (openDialog.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = openDialog.FileName.ToString();
                pictureBox1.ImageLocation = textBox1.Text;
            }
        }

кнопка шифрования
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
  private void button3_Click(object sender, EventArgs e)
        {
            Bitmap img = new Bitmap(textBox1.Text);
 
            for (int i = 0; i < img.Width; i++)
            {
                for (int j = 0; j < img.Height; j++)
                {
                    Color pixel = img.GetPixel(i, j);
 
                    if (i < 1 && j < textBox2.TextLength)
                    {
                        Console.WriteLine("R = [" + i + "][" + j + "] = " + pixel.R);
                        Console.WriteLine("G = [" + i + "][" + j + "] = " + pixel.G);
                        Console.WriteLine("G = [" + i + "][" + j + "] = " + pixel.B);
 
                        char letter = Convert.ToChar(textBox2.Text.Substring(j, 1));
                        int value = Convert.ToInt32(letter);
                        Console.WriteLine("letter : " + letter + " value : " + value);
 
                        img.SetPixel(i, j, Color.FromArgb(pixel.R, pixel.G, value));
                    }
 
                    if (i == img.Width - 1 && j == img.Height - 1)
                    {
                        img.SetPixel(i, j, Color.FromArgb(pixel.R, pixel.G, textBox2.TextLength));
                    }
 
                }
            }
 
            SaveFileDialog saveFile = new SaveFileDialog();
            saveFile.Filter = "Image Files (*.png, *.jpg) | *.png; *.jpg";
            saveFile.InitialDirectory = @"C:\";
 
            if (saveFile.ShowDialog() == DialogResult.OK)
            {
                textBox1.Text = saveFile.FileName.ToString();
                pictureBox1.ImageLocation = textBox1.Text;
 
                img.Save(textBox1.Text);
            }
        }
кнопка дешифровки
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 private void button2_Click(object sender, EventArgs e)
        {
            Bitmap img = new Bitmap(textBox1.Text);
            string message = "";
 
            Color lastpixel = img.GetPixel(img.Width - 1, img.Height - 1);
            int msgLength = lastpixel.B;
 
            for (int i = 0; i < img.Width; i++)
            {
                for (int j = 0; j < img.Height; j++)
                {
                    Color pixel = img.GetPixel(i, j);
 
                    if (i < 1 && j < msgLength)
                    {
                        int value = pixel.B;
                        char c = Convert.ToChar(value);
                        string letter = System.Text.Encoding.ASCII.GetString(new byte[] { Convert.ToByte(c) });
 
                        message = message + letter;
                    }
                }
            }
 
            textBox2.Text = message;
        }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.04.2021, 21:30
Ответы с готовыми решениями:

Программа выдает неправильный ответ
Дан двумерный массив целых чисел, сформировать одномерный массив, каждый элемент которого равен наибольшему по модулю элементу...

Программа выдает неправильный ответ при перегрузке
не понимаю почему ответ выходит за пределы допустимых значений:wall: #include &lt;iostream&gt; #include &lt;fstream&gt; using...

Неправильный логин и неправильный пароль, программа не выдает сообщения об ошибке
Вообщем проблема такова: DBConnect-&gt;ConnectionString = &quot;Provider=SQLOLEDB.1;Password=&quot; + password + &quot;;Persist Security...

5
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
08.04.2021, 08:26
Цитата Сообщение от one4zero Посмотреть сообщение
Подскажите пожалуйста из-за чего это может быть?
В коде ошибка.
0
0 / 0 / 0
Регистрация: 15.05.2020
Сообщений: 12
08.04.2021, 08:39  [ТС]
А где?

Добавлено через 2 минуты
В каком месте
0
Эксперт .NET
 Аватар для Usaga
14314 / 9399 / 1355
Регистрация: 21.01.2016
Сообщений: 35,435
08.04.2021, 08:49
one4zero, в одном из файлов, между первой и последней строками. Копаться в коде за вас я не стану. И вряд ли кто другой станет. Изучите работу кода под отладкой. Это единственный способ разобраться.
1
Эксперт .NET
 Аватар для Wolfdp
3790 / 1767 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
08.04.2021, 08:57

Не по теме:

Цитата Сообщение от one4zero Посмотреть сообщение
Console.WriteLine
На кой вам выводить в консоль?



C#
1
2
3
4
5
                        char letter = Convert.ToChar(textBox2.Text.Substring(j, 1));
                        int value = Convert.ToInt32(letter);
                        Console.WriteLine("letter : " + letter + " value : " + value);
 
                        img.SetPixel(i, j, Color.FromArgb(pixel.R, pixel.G, value));
0. зачем Substring?! Почему не просто Text[j] ?! Тоже самое и с letter -- зачем такие сложности?
1. шифруют обычно побитово. Т.е. в каждом пикселе хранится 3~4 бита информации, меняя только последний бит каждого канала. Количество "упаковываемой" информации резко сокращается, но так менее искажается исходное изображение.
2. jpeg "шакалит" изображение, и ваш Bitmap после сохранения потеряется. Я пробовал игратся с настройками качества -- не спасает. Так что использовать остается только bmp или png. Возможно еще и tif, но это не точно.
3. я бы переганял string в byte[] и уже работал с ним, т.к. это позволяет отвязаться от формата шифруемых данных.
0
10.04.2021, 12:30

Не по теме:

Wolfdp, мопед не его, он просто разместил обьяву.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.04.2021, 12:30
Помогаю со студенческими работами здесь

Программа при запуске и вводе данных выдаёт неправильный ответ
Программа при запуске и вводе данных выдаёт неправильный ответ (огромное число) #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; ...

От совсем новичка:почему программа выдает неправильный ответ при тестах с большими числами
Я новичок. Совсем новичок. Помогите разобраться с проблемой. Есть задача: Мэрия города М-ска приняла решение провести реновацию домов на...

AES - Текст при расшифровке не соответствует оригиналу
Привет. Закодил AES, но он не работает. Текст при расшифровке не соответствует оригиналу. Понимаю, что звучит глупо, но может кто то...

Программа выдает неправильный результат
Создал проект unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, ...

Программа выдает неправильный результат
#include &lt;stdio.h&gt; int main(void){ char mas; scanf(&quot;%s&quot;, mas); for(int i = 0; i &lt; 10; i++){ switch(mas){ case '0': ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru