Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Faust611
2 / 2 / 0
Регистрация: 16.06.2015
Сообщений: 79
#1

Шифрование умножением на бинарные матрицы - C++

01.03.2016, 14:23. Просмотров 359. Ответов 2
Метки нет (Все метки)

Пытаюсь получить сделать шифрование на бинарные матрицы.Получился вот такой вот код.Ну почему выдает ошибку когда пытаюсь скомпилировать.
может я конечно что-то неправильно написал.Помогите разобраться пожалуйста.
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
132
133
134
135
#include <iostream>
#include <conio.h>
#include <math.h>
using namespace std;
//funkcia podscheta dlinni massiva
unsigned int Lenght(const char s[])
{
 int L=0;
 while(s[L++]);
 return (L-1);
}
 
int main()
{
 unsigned int  key[8][8];
 
 //stroka 1
 key[0][0]=1;
 key[0][1]=0;
 key[0][2]=0;
 key[0][3]=0;
 key[0][4]=1;
 key[0][5]=0;
 key[0][6]=0;
 key[0][7]=0;
 //строка 2
 key[1][0]=0;
 key[1][1]=1;
 key[1][2]=1;
 key[1][3]=0;
 key[1][4]=0;
 key[1][5]=0;
 key[1][6]=1;
 key[1][7]=0;
 //stroka 3
 key[3][0]=0;
 key[3][1]=1;
 key[3][2]=1;
 key[3][3]=1;
 key[3][4]=0;
 key[3][5]=1;
 key[3][6]=1;
 key[3][7]=1;
  //stroka 4
 key[0][0]=1;
 key[0][1]=0;
 key[0][2]=1;
 key[0][3]=1;
 key[0][4]=1;
 key[0][5]=1;
 key[0][6]=0;
 key[0][7]=1;
  //stroka 5
 key[0][0]=0;
 key[0][1]=0;
 key[0][2]=0;
 key[0][3]=1;
 key[0][4]=0;
 key[0][5]=1;
 key[0][6]=1;
 key[0][7]=0;
  //stroka 6
 key[0][0]=1;
 key[0][1]=1;
 key[0][2]=0;
 key[0][3]=1;
 key[0][4]=0;
 key[0][5]=0;
 key[0][6]=1;
 key[0][7]=0;
  //stroka 7
 key[0][0]=0;
 key[0][1]=0;
 key[0][2]=0;
 key[0][3]=1;
 key[0][4]=1;
 key[0][5]=0;
 key[0][6]=1;
 key[0][7]=0;
  //stroka 8
 key[0][0]=0;
 key[0][1]=1;
 key[0][2]=1;
 key[0][3]=0;
 key[0][4]=1;
 key[0][5]=0;
 key[0][6]=0;
 key[0][7]=1;
 
 char abc[28]="abcdefghijklmnopqrstuvwxyz";
 
 //kodiruem slovo "studentaa"
 unsigned short word[9];
 
 char text[15]="studentaa";
 
 int w=0;
 
 cout<<""<<endl;
 cout<<"ishodnoe slovo: studentaa"<<endl;
 while(w<=Lenght(text))
 {
  for(int i=0;i<25;i++)
  {
 
   if(text[w]==abc[i])word[w]=i;
  }
 
  w++;
 }
 
 
 unsigned short cript[9]={0};
 
 cout<<"polychenniy shifr v vide chastey razbityh po 3"<<endl<<" "<<endl;
 for(int k=0;k<9;k+=3)
 {
  for(int i=0;i<8;i++)
  {
  cript[i+k]=(key[i][i]*word[0+k]+key[i][i]*word[1+k]+key[i][i]*word[2+k]);
 
  cout<<cript[i+k]<<" ";
  }
  cout<<endl;
 }
 cout<<" polychenniy shifr v vide stroki nomerov i bykv:"<<endl;
 
 for(int i=0;i<9;i++)
 cout<<cript[i]<<"="<<abc[cript[i]]<<endl;
 cout<<endl<<"Pozalysta nazmite ENTER";
 cin.get();
 
 return 0;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2016, 14:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Шифрование умножением на бинарные матрицы (C++):

Шифрование XOR не кодирует бинарные данные - C++
Текст кодирует/декодирует нормально.Бинарные файлы НЕТ. char tst=&quot;fnfdnbdlfkbpfdgkgfdm&quot;; wchar_t in=L&quot;F:\\test\\1.exe&quot;; wchar_t...

Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: а) умножением элементов каждой строки первой матрицы на наибольш - C++
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу: а) умножением элементов каждой строки первой матрицы ...

Проблемы с умножением матрицы - C++
Здравствуйте, пожалуйста, взгляните на этот код... Думаю, что написал все правильно. Но к сожалению вывод программы такой: Matrix: 0 0...

Получить новую матрицу умножением элементов первой матрицы на наибольшее из значений элементов соответствующий строки второй матрицы - C++
Даны две действительные квадратные матрицы порядка n. Получить новую матрицу умножением элементов каждой строки первой матрицы на...

Получить новую матрицу умножением элементов каждой строки первой матрицы - C++
Даны две действительные квадратные матрицы порядка n.Получить новую матрицу умножением элементов каждой строки первой матрицы на наибольшее...

умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй матрицы - C++
получить новую матрицу умножением элементов каждой строки первой матрицы на наибольший из элементов соответствующей строки второй...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
elephants
25 / 25 / 6
Регистрация: 30.12.2015
Сообщений: 95
Завершенные тесты: 1
01.03.2016, 14:56 #2
У меня все компилируется. Ошибку -то какую выдает? А вот программа должным образом не работает, т.к. вот тут
C++
1
2
for(int i=0;i<9;i++)
 cout<<cript[i]<<"="<<abc[cript[i]]<<endl;
происходит выход за пределы массива.
Faust611
2 / 2 / 0
Регистрация: 16.06.2015
Сообщений: 79
01.03.2016, 16:32  [ТС] #3
вот такую вот :Необработанное исключение по адресу 0x00A9603E в matr.exe: 0xC0000005: нарушение прав доступа при чтении по адресу 0x0019FB4C. И пытался сделать символ чтобы был в двоичном формате. У меня проблема наверное с тем что не получается у меня привести все в двоичный формат.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2016, 16:32
Привет! Вот еще темы с ответами:

Массив: Получить новую матрицу следующим способом: умножением Min каждой строки первой матрицы на Max соответствующего столбца второй - C++
Пусть даны две вещественные матрицы порядка N. Получить новую матрицу следующим способом: умножением минимального элемента каждой строки...

шифрование по ключу матрицы 3х4 - C++
необходимо ввести строку для кодирования далее строка посимвольно записывается в матрицу по строкам и чтобы получить шифр, необходимо...

Шифрование данных с использованием квадратной матрицы третьего порядка - C++
мне нужно создать программу для шифрования данных с использованием квадратной матрицы третьего порядка. у меня есть код программы....

Зменить возведение в степень умножением - C++
Приветьте, помогите решить эту задачу одним циклом for, не юзая pow. Есть int N, есть double x; Нужно найти x^n^2/2^n;


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru