Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
1 / 1 / 1
Регистрация: 05.11.2021
Сообщений: 5

Шифрование и дешифрование. Не могу понять ошибку

05.11.2021, 13:33. Показов 1778. Ответов 5

Студворк — интернет-сервис помощи студентам
Шифрование с помощью S-блоков осуществляется следующим образом. Сообщение
разбивается на блоки из 6 бит. Два из этих битов используются для определения номера
строки, а остальные четыре для определения номера столбца. Номер строки определяется как
двоичная запись числа, составленная из заданных битов. Для получения шифр-текста будем
записывать сначала два бита, означающие номер строки, а затем значение в найденной
ячейке S-блока.

Моё шифрование:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public override void Execute()
        {
            int[,] sBlock = new int[,] 
            { 
                { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 },
                { 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 },
                { 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 },
                { 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 }
            };
            const int sizeOfBlock = 6;
            int reverse = 0;
            FileStream fs = new FileStream(@"D:\крипта\Кибернетика.docx", FileMode.OpenOrCreate, FileAccess.Read);
            int size = (int)fs.Length;
            for (int i = 0; i < size % (sizeOfBlock * 8); i++)
            {
                size += 1;
                reverse += 1;
            }
            byte[] byData = new byte[size];
            if (fs.CanSeek == true)
            {
                fs.Read(byData, 0, size);
            }
            fs.Dispose();
            FileStream fs2 = File.Create(@"D:\крипта\Кибернетика2.docx");
            SblockEncrypt(byData, fs2, sizeOfBlock, reverse, sBlock);
        }
 
        public static void SblockEncrypt(byte[] byData, FileStream fs, int sizeOfBlock, int reverse, int[,] sBlock )
        {
            BitArray biData = new BitArray(byData);
            for (int i = 0; i < biData.Length; i += sizeOfBlock)
            {
                bool Bit1 = biData[i];
                bool Bit2 = biData[i + 1];
                bool Bit3 = biData[i + 2];
                bool Bit4 = biData[i + 3];
                bool Bit5 = biData[i + 4];
                bool Bit6 = biData[i + 5];
 
                int Row = ChooseRow(Bit2, Bit5);
                int Column = ChooseColumn(Bit1, Bit3, Bit4, Bit6);
 
                int FoundNumber = sBlock[Row, Column];
                string BinaryFoundNumber = Convert.ToString(FoundNumber, 2);
                while (BinaryFoundNumber.Length < 4)
                {
                    BinaryFoundNumber = "0" + BinaryFoundNumber;
                }
                string Bin1 = Convert.ToString(BinaryFoundNumber[0]);
                string Bin2 = Convert.ToString(BinaryFoundNumber[1]);
                string Bin3 = Convert.ToString(BinaryFoundNumber[2]);
                string Bin4 = Convert.ToString(BinaryFoundNumber[3]);
                bool nBit3 = Convert.ToBoolean(Convert.ToInt32(Bin1));
                bool nBit4 = Convert.ToBoolean(Convert.ToInt32(Bin2));
                bool nBit5 = Convert.ToBoolean(Convert.ToInt32(Bin3));
                bool nBit6 = Convert.ToBoolean(Convert.ToInt32(Bin4));
 
                biData[i] = Bit5;
                biData[i + 1] = Bit2;
                biData[i + 2] = nBit3;
                biData[i + 3] = nBit4;
                biData[i + 4] = nBit5;
                biData[i + 5] = nBit6;
 
 
            }
 
            byData = ConvertToByte(biData);
 
            fs.Write(byData, 0, (byData.Length - reverse));
        }
        
        
 
        public static int ChooseRow(bool Bit2, bool Bit5)
        {
            int num2 = 0, num5 = 0;
            if (Bit2) num2 = 1;
            if (Bit5) num5 = 1;
            String Binary = num5.ToString() + num2.ToString();
            
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
            
            return result;
        }
 
        public static int ChooseColumn(bool Bit1, bool Bit3, bool Bit4, bool Bit6)
        {
            int num1 = 0, num3 = 0, num4 = 0, num6 = 0;
            if (Bit1) num1 = 1;
            if (Bit3) num3 = 1;
            if (Bit4) num4 = 1;
            if (Bit6) num6 = 1;
            String Binary = num1.ToString() + num3.ToString() + num4.ToString() + num6.ToString();
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
 
 
            return result;
        }
 
        public static byte[] ConvertToByte(BitArray Bits)
        {
            byte[] Bytes = new byte[(Bits.Length - 1) / 8 + 1];
            Bits.CopyTo(Bytes, 0);
            return Bytes;
        }
Моё дешифрование:

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
public override void Execute()
        {
            int[,] sBlock = new int[,]
            {
                { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 },
                { 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 },
                { 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 },
                { 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 }
            };
            const int sizeOfBlock = 6;
            int reverse = 0;
            FileStream fs = new FileStream(@"D:\крипта\Кибернетика2.docx", FileMode.OpenOrCreate, FileAccess.Read);
            int size = (int)fs.Length;
            for (int i = 0; i < size % (sizeOfBlock * 8); i++)
            {
                size += 1;
                reverse += 1;
            }
            byte[] byData = new byte[size];
            if (fs.CanSeek == true)
            {
                fs.Read(byData, 0, size);
            }
            fs.Dispose();
            FileStream fs2 = File.Create(@"D:\крипта\Кибернетика3.docx");
            SblockEncrypt(byData, fs2, sizeOfBlock, reverse, sBlock);
        }
 
        public static void SblockEncrypt(byte[] byData, FileStream fs, int sizeOfBlock, int reverse, int[,] sBlock)
        {
            BitArray biData = new BitArray(byData);
            for (int i = 0; i < biData.Length; i += sizeOfBlock)
            {
                bool Bit1 = biData[i];
                bool Bit2 = biData[i + 1];
                bool Bit3 = biData[i + 2];
                bool Bit4 = biData[i + 3];
                bool Bit5 = biData[i + 4];
                bool Bit6 = biData[i + 5];
 
                
                int Row = ChooseRow(Bit2, Bit1);
                int Column = 0;
 
                int num3 = Convert.ToInt32(Bit3);
                int num4 = Convert.ToInt32(Bit4);
                int num5 = Convert.ToInt32(Bit5);
                int num6 = Convert.ToInt32(Bit6);
 
                string Bin1 = Convert.ToString(num3);
                string Bin2 = Convert.ToString(num4);
                string Bin3 = Convert.ToString(num5);
                string Bin4 = Convert.ToString(num6);
 
                string BinaryFoundNumber = Bin1 + Bin2 + Bin3 + Bin4;
                int FoundNumber = Convert.ToInt32(BinaryFoundNumber, 2);
                for (int j = 0; j < 15; j++)
                {
                    if (FoundNumber == sBlock[Row, j])
                    {
                        Column = j;
                    }
                }
                String BinaryColumn = Convert.ToString(Column, 2);
                while (BinaryColumn.Length < 4)
                {
                    BinaryColumn = "0" + BinaryColumn;
                }
                
                string cBin1 = Convert.ToString(BinaryColumn[0]);
                string cBin2 = Convert.ToString(BinaryColumn[1]);
                string cBin3 = Convert.ToString(BinaryColumn[2]);
                string cBin4 = Convert.ToString(BinaryColumn[3]);
 
                bool nBit1 = Convert.ToBoolean(Convert.ToInt32(cBin1));
                bool nBit3 = Convert.ToBoolean(Convert.ToInt32(cBin2));
                bool nBit4 = Convert.ToBoolean(Convert.ToInt32(cBin3));
                bool nBit6 = Convert.ToBoolean(Convert.ToInt32(cBin4));
 
                biData[i] = nBit1;
                biData[i + 1] = Bit2;
                biData[i + 2] = nBit3;
                biData[i + 3] = nBit4;
                biData[i + 4] = Bit1;
                biData[i + 5] = nBit6;
 
 
 
 
 
            }
 
            byData = ConvertToByte(biData);
 
            fs.Write(byData, 0, (byData.Length - reverse));
        }
 
        public static int ChooseRow(bool Bit2, bool Bit5)
        {
            int num2 = 0, num5 = 0;
            if (Bit2) num2 = 1;
            if (Bit5) num5 = 1;
            String Binary = num5.ToString() + num2.ToString();
 
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
 
            return result;
        }
 
        public static int ChooseColumn(bool Bit1, bool Bit3, bool Bit4, bool Bit6)
        {
            int num1 = 0, num3 = 0, num4 = 0, num6 = 0;
            if (Bit1) num1 = 1;
            if (Bit3) num3 = 1;
            if (Bit4) num4 = 1;
            if (Bit6) num6 = 1;
            String Binary = num1.ToString() + num3.ToString() + num4.ToString() + num6.ToString();
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
 
 
            return result;
        }
 
        public static byte[] ConvertToByte(BitArray Bits)
        {
            byte[] Bytes = new byte[(Bits.Length - 1) / 8 + 1];
            Bits.CopyTo(Bytes, 0);
            return Bytes;
        }
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2021, 13:33
Ответы с готовыми решениями:

Шифрование и дешифрование. Не могу найти ошибку
Доброго времени суток! Шифровала методом Гронсфельда, но при выводе на экран расшифрованного текста почему-то выводится не только...

Дешифрование методом Виженера. Не могу обнаружить ошибку
Доброго времени суток! Сделала шифрование текста, получилось, а вот как дешифрую, получается еще один шифрованый текст, а не исходный....

Структура: Не могу понять, почему выдает ошибку и как собственно эту ошибку можно исправить?
Привет,не могу понять почему ошибку выдает и как сбстно эту ошибку можно исправить? #include &lt;stdio.h&gt; #include...

5
1 / 1 / 1
Регистрация: 05.11.2021
Сообщений: 5
05.11.2021, 19:49  [ТС]
Дополнил код комментариями.
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
public override void Execute()
        {
            int[,] sBlock = new int[,] 
            { 
                { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 },
                { 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 },
                { 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 },
                { 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 }
            };
            const int sizeOfBlock = 6;
            int reverse = 0;
            FileStream fs = new FileStream(@"D:\крипта\Кибернетика.docx", FileMode.OpenOrCreate, FileAccess.Read);
            int size = (int)fs.Length;
            for (int i = 0; i < size % (sizeOfBlock * 8); i++)
            {
                size += 1;
                reverse += 1;
            }
            byte[] byData = new byte[size];
            if (fs.CanSeek == true)
            {
                fs.Read(byData, 0, size);
            }
            fs.Dispose();
            FileStream fs2 = File.Create(@"D:\крипта\Кибернетика2.docx");
            SblockEncrypt(byData, fs2, sizeOfBlock, reverse, sBlock);
        }
 
        public static void SblockEncrypt(byte[] byData, FileStream fs, int sizeOfBlock, int reverse, int[,] sBlock )
        {
            BitArray biData = new BitArray(byData);
            for (int i = 0; i < biData.Length; i += sizeOfBlock)
            {
                bool Bit1 = biData[i]; // на каждом шаге записываем биты по порядку
                bool Bit2 = biData[i + 1];
                bool Bit3 = biData[i + 2];
                bool Bit4 = biData[i + 3];
                bool Bit5 = biData[i + 4];
                bool Bit6 = biData[i + 5];
 
                int Row = ChooseRow(Bit2, Bit5); // выбираем строку по битам (5 2 биты) 
                int Column = ChooseColumn(Bit1, Bit3, Bit4, Bit6); // выбираем столбец по битам (1 3 4 6 биты)
 
                int FoundNumber = sBlock[Row, Column]; // число в нужной ячейке
                string BinaryFoundNumber = Convert.ToString(FoundNumber, 2); // переводим его в двоичный код
                while (BinaryFoundNumber.Length < 4)
                {
                    BinaryFoundNumber = "0" + BinaryFoundNumber;
                }
                string Bin1 = Convert.ToString(BinaryFoundNumber[0]);
                string Bin2 = Convert.ToString(BinaryFoundNumber[1]);
                string Bin3 = Convert.ToString(BinaryFoundNumber[2]);
                string Bin4 = Convert.ToString(BinaryFoundNumber[3]); // число переведено в двоичный код
                bool nBit3 = Convert.ToBoolean(Convert.ToInt32(Bin1));
                bool nBit4 = Convert.ToBoolean(Convert.ToInt32(Bin2));
                bool nBit5 = Convert.ToBoolean(Convert.ToInt32(Bin3));
                bool nBit6 = Convert.ToBoolean(Convert.ToInt32(Bin4)); // каждая цифра из двоичного кода записана для каждого нового 3, 4, 5 и 6 бита 
 
                biData[i] = Bit5; // 1 и 2 биты это номер выбранной строки в двоином коде
                biData[i + 1] = Bit2;
                biData[i + 2] = nBit3; // записываются новые значения битов
                biData[i + 3] = nBit4;
                biData[i + 4] = nBit5;
                biData[i + 5] = nBit6;
 
 
            }
 
            byData = ConvertToByte(biData);
 
            fs.Write(byData, 0, (byData.Length - reverse));
        }
        
        
 
        public static int ChooseRow(bool Bit2, bool Bit5)
        {
            int num2 = 0, num5 = 0;
            if (Bit2) num2 = 1;
            if (Bit5) num5 = 1;
            String Binary = num5.ToString() + num2.ToString();
            
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
            
            return result;
        }
 
        public static int ChooseColumn(bool Bit1, bool Bit3, bool Bit4, bool Bit6)
        {
            int num1 = 0, num3 = 0, num4 = 0, num6 = 0;
            if (Bit1) num1 = 1;
            if (Bit3) num3 = 1;
            if (Bit4) num4 = 1;
            if (Bit6) num6 = 1;
            String Binary = num1.ToString() + num3.ToString() + num4.ToString() + num6.ToString();
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
 
 
            return result;
        }
 
        public static byte[] ConvertToByte(BitArray Bits)
        {
            byte[] Bytes = new byte[(Bits.Length - 1) / 8 + 1];
            Bits.CopyTo(Bytes, 0);
            return Bytes;
        }
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
public override void Execute()
        {
            int[,] sBlock = new int[,]
            {
                { 12, 1, 10, 15, 9, 2, 6, 8, 0, 13, 3, 4, 14, 7, 5, 11 },
                { 10, 15, 4, 2, 7, 12, 9, 5, 6, 1, 13, 14, 0, 11, 3, 8 },
                { 9, 14, 15, 5, 2, 8, 12, 3, 7, 0, 4, 10, 1, 13, 11, 6 },
                { 4, 3, 2, 12, 9, 5, 15, 10, 11, 14, 1, 7, 6, 0, 8, 13 }
            };
            const int sizeOfBlock = 6;
            int reverse = 0;
            FileStream fs = new FileStream(@"D:\крипта\Кибернетика2.docx", FileMode.OpenOrCreate, FileAccess.Read);
            int size = (int)fs.Length;
            for (int i = 0; i < size % (sizeOfBlock * 8); i++)
            {
                size += 1;
                reverse += 1;
            }
            byte[] byData = new byte[size];
            if (fs.CanSeek == true)
            {
                fs.Read(byData, 0, size);
            }
            fs.Dispose();
            FileStream fs2 = File.Create(@"D:\крипта\Кибернетика3.docx");
            SblockEncrypt(byData, fs2, sizeOfBlock, reverse, sBlock);
        }
 
        public static void SblockEncrypt(byte[] byData, FileStream fs, int sizeOfBlock, int reverse, int[,] sBlock)
        {
            BitArray biData = new BitArray(byData);
            for (int i = 0; i < biData.Length; i += sizeOfBlock)
            {
                bool Bit1 = biData[i]; // на каждом шаге записываем биты по порядку
                bool Bit2 = biData[i + 1];
                bool Bit3 = biData[i + 2];
                bool Bit4 = biData[i + 3];
                bool Bit5 = biData[i + 4];
                bool Bit6 = biData[i + 5];
 
                
                int Row = ChooseRow(Bit2, Bit1); // знаем, что первые два бита - это номер строки
                int Column = 0;
 
                int num3 = Convert.ToInt32(Bit3); // знаем, что с 3 по 6 бит - это номер стоблца в двоичном коде
                int num4 = Convert.ToInt32(Bit4);
                int num5 = Convert.ToInt32(Bit5);
                int num6 = Convert.ToInt32(Bit6);
 
                string Bin1 = Convert.ToString(num3); // переводим из битов в двоичный код
                string Bin2 = Convert.ToString(num4);
                string Bin3 = Convert.ToString(num5);
                string Bin4 = Convert.ToString(num6);
 
                string BinaryFoundNumber = Bin1 + Bin2 + Bin3 + Bin4; // записываем в одну строку двоичный код
                int FoundNumber = Convert.ToInt32(BinaryFoundNumber, 2); // переводим в десятичную систему счисления и находим число которое было записано в биты
                for (int j = 0; j < 15; j++)
                {
                    if (FoundNumber == sBlock[Row, j]) // по значению находим номер стоблца
                    {
                        Column = j;
                    }
                }
                String BinaryColumn = Convert.ToString(Column, 2); // переводим номер строки в двоичный код
                while (BinaryColumn.Length < 4)
                {
                    BinaryColumn = "0" + BinaryColumn; 
                }
                
                string cBin1 = Convert.ToString(BinaryColumn[0]);
                string cBin2 = Convert.ToString(BinaryColumn[1]);
                string cBin3 = Convert.ToString(BinaryColumn[2]);
                string cBin4 = Convert.ToString(BinaryColumn[3]); // число переведено в двоичный код
 
                bool nBit1 = Convert.ToBoolean(Convert.ToInt32(cBin1));
                bool nBit3 = Convert.ToBoolean(Convert.ToInt32(cBin2));
                bool nBit4 = Convert.ToBoolean(Convert.ToInt32(cBin3));
                bool nBit6 = Convert.ToBoolean(Convert.ToInt32(cBin4)); // каждое цифра двоичного кода записана для каждого нового 1, 3, 4 и 6 бита
 
                biData[i] = nBit1; // 1 бит новый
                biData[i + 1] = Bit2; // 2 бит остается тем же
                biData[i + 2] = nBit3; // 3 бит новый
                biData[i + 3] = nBit4; // 4 бит новый
                biData[i + 4] = Bit1; // 5 бит после шифрования был записан в 1 бит
                biData[i + 5] = nBit6; // 6 бит новый
 
 
 
 
 
            }
 
            byData = ConvertToByte(biData);
 
            fs.Write(byData, 0, (byData.Length - reverse));
        }
 
        public static int ChooseRow(bool Bit2, bool Bit5)
        {
            int num2 = 0, num5 = 0;
            if (Bit2) num2 = 1;
            if (Bit5) num5 = 1;
            String Binary = num5.ToString() + num2.ToString();
 
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
 
            return result;
        }
 
        public static int ChooseColumn(bool Bit1, bool Bit3, bool Bit4, bool Bit6)
        {
            int num1 = 0, num3 = 0, num4 = 0, num6 = 0;
            if (Bit1) num1 = 1;
            if (Bit3) num3 = 1;
            if (Bit4) num4 = 1;
            if (Bit6) num6 = 1;
            String Binary = num1.ToString() + num3.ToString() + num4.ToString() + num6.ToString();
            int result = 0;
            result = Convert.ToInt32(Binary, 2);
 
 
            return result;
        }
 
        public static byte[] ConvertToByte(BitArray Bits)
        {
            byte[] Bytes = new byte[(Bits.Length - 1) / 8 + 1];
            Bits.CopyTo(Bytes, 0);
            return Bytes;
        }
0
sleep
 Аватар для I can
4930 / 4586 / 840
Регистрация: 13.04.2015
Сообщений: 9,738
05.11.2021, 19:55
Цитата Сообщение от Gogoycka Посмотреть сообщение
Кибернетика.docx
А на простом текстовом файле проверял?
0
1 / 1 / 1
Регистрация: 05.11.2021
Сообщений: 5
05.11.2021, 19:58  [ТС]
Да в целом неважно какие файл. Вот пнг просто пустая стала
Изображения
 
0
1 / 1 / 1
Регистрация: 05.11.2021
Сообщений: 5
05.11.2021, 20:07  [ТС]
Открываю файлы через Notepad++ и там данные немного, но отличаются у изначального файла и шифрованного + дешифрованного.
Вот например от верхней png.
Изначальный: " ізд№hy_ЗmtчaЭ·С№“{МирЭMЩ№“fЏЋ»з¤9gлRгiЕЗ F‹/1m'W&>,~,ѕ,ю,>-rсн?ьРь?¬bцах2"H IEND®B`‚ "
Получившийся: " ізд№hy_ЗmtчaЭ·С№“{МирЭMЩ№“fЏЋ»з¤9gлRгiЕЗ Ђ/1m'W&>,~,ѕ,J,>-rсЂ?ьРH¬bцаA2"H IEND®B`‚ "
Я вот вижу это, но не доходит что же не так работает.
0
1 / 1 / 1
Регистрация: 05.11.2021
Сообщений: 5
06.11.2021, 15:23  [ТС]
Лучший ответ Сообщение было отмечено I can как решение

Решение

Разобрался

В дешифровании не проверял 15 столбец S-блока
C#
1
2
3
4
5
6
7
8
int FoundNumber = Convert.ToInt32(BinaryFoundNumber, 2); // переводим в десятичную систему счисления и находим число которое было записано в биты
                for (int j = 0; j <= 15; j++)
                {
                    if (FoundNumber == sBlock[Row, j]) // по значению находим номер стоблца
                    {
                        Column = j;
                    }
                }
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2021, 15:23
Помогаю со студенческими работами здесь

Не могу понять ошибку
invalid operands of types 'double' and 'int' to binary 'operator&lt;&lt;' -ошибка Я менял double на int и программа запустилась, но ответа не...

Не могу понять ошибку
Задание таково: &quot;Разработать программу для поиска необходимой информации в массиве, элементы которого являются записями. Каждая запись...

Не могу понять ошибку
Всем привет,сегодня делал такое задание,нужно показать,какой их трех фильмов популярнее начал делать,вроде бы все должно быть правильно,но...

Не могу понять ошибку
Вот такая программа, реализующая односвязный список: #include &lt;iostream&gt; #include &lt;clocale&gt; #include &quot;listStruct.h&quot; ...

Не могу понять ошибку
При попытке запустить код на Паскале появляется такая ошибка: Program1.pas(155) : Встречено 'Try', а ожидался идентификатор Код...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru