Denis Rus
Denis Rus

помогите пожалуйста зашифровать сообщения квадратом полибия 6х6

а) (замена на другую такую же в нижнем столбце ) Состоянием защищенности объекта от внешних и внутренних угроз называется безопасностью объекта
б) (шифруемая буква заменяется на кординаты квадрата -строка- столбец в котором она записана,

Гаммирование это процесс наложения по определенному закону гаммы шифра на открытые данные

Костя
Костя

уважуха тебе !! как же я далёк от этого, ничего не бум бум в этом) ) сорри что не по теме пишу)

Ир
Ирина

Для начала сделайте матрицу 6х6 и занесите в неё алфавит шифрования.

1. Вообще-то это называется шифр Цезаря, но не в этом суть.

Просто найдите букву в 2-мерном массиве.
Добавьте к номеру строки 1 и возьмите остаток от деления на 6 (чтобы 5+1=6 -> 0).
Потом возьмите букву в получившейся строке и том же столбце.
Для обратного шифрования надо добавлять 5 (это равносильно -1 после остатка по модулю 6)

ЗЫ
Этот метод не требует таких усилий. Обычно ЗАРАНЕЕ делают вектор перестановок char p[char] и просто посимвольно заменяют s[i]=p[s[i]]

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

Для получения одной буквы результата шифрования используются 2 подряд идущие буквы исходного текста.
Поэтому, чтобы получать 1 символ за шаг, удвоим исходный текст:
пример 'секретно'->'секретносекретно'
попутно запомним длину исходной строки (обозначим её len) в примере len=8
Пробежимся с шагом 2 по удвоенной строке:
-- на каждом шаге работаем с символами A=s[2*i] и B=s[2*i+1]
-- найдём строку и столбец для A: rowA, colA и для B: rowB, colB
-- посчитаем idxA=(2*i -- аналогично idxB=((2*i+1) -- в результат добавим символ матрицы строки idxA и столбца idxB

Для обратного шифрования нужно брать пару символов A=s[i] и B=s[i+len/2] (для простоты считаем len чётным, нечётный - вам для самостоятельной работы) .
Первый символ: cтрока rowA и столбец rowB. Второй символ: строка colA и столбец colB.
Таким образом 2 зашифрованных символа преобразуются 2 дешифрованных.

ЗЫ можно не удваивать строку, а брать символы 2*i и 2*i+1 в исходной строке, только не напрямую, а остаток от деления на len

ЗЗЫ
Метод сложный, теоретически должен работать. Но что называется на свой страх и риск 🙂

ПН
Петр Никулин

Это не ответ на Ваш вопрос, но вот реализация шифровки текста из латинских букв с помощью квадрата 5х5.
========================================
#include

using namespace std;

int main(){

char sqr[5][5] = {
{'a','b','c','d','e'},
{'f','g','h','i','k'},
{'l','m','n','o','p'},
{'q','r','s','t','u'},
{'v','w','x','y','z'},
};

char word[80];// = "sometext"; // шифруемый текст
gets(word);

char *pword = new char[strlen(word)+1]; // массив для шифровки.
int b;

for(int i(0); i < 5*5; i++){ // шифруем
for(int j(0); j < strlen(word); j++){
if(word[j] == sqr[0][i] || tolower(word[j]) == sqr[0][i]){
b=i;
if((b+5) < 25){ pword[j] = sqr[0][b+5];}
else{ pword[j] = sqr[0][b+5-25];}
}
else if(word[j] == ' ') pword[j] = ' ';
else if(word[j] == 'j' || word[j] == 'J') pword[j] = 'j';
if(isupper(word[j])) pword[j] = toupper(pword[j]);
if(!isalpha(word[j])) pword[j] = word[j];
}
}
pword[strlen(word)] = '\0';

cout << pword << endl; // смотрим, что получилось

char *ppword = new char[strlen(pword)]; // массив для дешифровки

for(int i(0); i < strlen(pword); i++){ // дешфруем
for(int j(0); j < 25; j++){
if(pword[i] == sqr[0][j] || tolower(pword[i]) == sqr[0][j]) {
b = j;
if((b-5) >= 0) ppword[i] = sqr[0][b-5];
else ppword[i] = sqr[0][b-5+25];
}
else if(pword[i] == ' ') ppword[i] = ' ';
else if(pword[i] == 'j' || pword[i] == 'J') ppword[i] = 'j';
if(isupper(pword[i])) ppword[i] = toupper(ppword[i]);
if(!isalpha(pword[i])) ppword[i] = pword[i];
}
}
ppword[strlen(pword)] = '\0';

cout << ppword << endl; // смотрим на дешифровку

system("pause >> void");
return 0;
}

Похожие вопросы
Помогите пожалуйста. Я на компьютере зашифровал файлы...
Нужно небольшое сообщение по программированию помогите пожалуйста
Кубик рубика помогите 6х6
Кубик рубик 6х6 помогите
Как открыть зашифрованный документ?
Какое здесь слово зашифровано? Помогите пожалуйста)
Помогите пожалуйста по php+mysql. Вывод сообщений!!!
Помогите мне зашифрованный пароль расшифровать
Зашифровать html-код
Помогите! antivirusebola зашифровал все файлы на компьютере. Что мне делать?