• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Взлом шифра цезаря С++

DrLamer

New member
07.09.2020
4
0
BIT
0
Приветствую, форумчане. Мне очень нужна ваша помощь. Может кто-нибудь сможет мне помочь с такой темой: программа на языке С++ которая будет взламывать какое-либо зашифрованное методом Цезаря слово простым перебором символов английского алфавита.
Т. е. допустим, что имеется шифрованное слово "KHOOR", мы не знаем какой ключ и не знаем какое слово должно получится в конце. Но методом сдвига каждого символа на единицу далее нам выдаст список из 26 вариантов (кол-во букв английского алфавита) из которых и будет виден один правильный вариант исходного слова. Исходное слово "Hello" и ключ - 3 для этого случая.
Заранее благодарю за помощь.
Извиняюсь, если где-то выразился неправильно я в программировании не особо силен.
 

Rook

Codeby Team
Red Team
09.01.2019
727
718
BIT
4
Приветствую, форумчане. Мне очень нужна ваша помощь. Может кто-нибудь сможет мне помочь с такой темой: программа на языке С++ которая будет взламывать какое-либо зашифрованное методом Цезаря слово простым перебором символов английского алфавита.
Т. е. допустим, что имеется шифрованное слово "KHOOR", мы не знаем какой ключ и не знаем какое слово должно получится в конце. Но методом сдвига каждого символа на единицу далее нам выдаст список из 26 вариантов (кол-во букв английского алфавита) из которых и будет виден один правильный вариант исходного слова. Исходное слово "Hello" и ключ - 3 для этого случая.
Заранее благодарю за помощь.
Извиняюсь, если где-то выразился неправильно я в программировании не особо силен.
Тебе нужен код для C++ который будет ломать шифр цезаря ?
 

BearSec

Platinum
20.04.2020
210
290
BIT
25
Приветствую, форумчане. Мне очень нужна ваша помощь. Может кто-нибудь сможет мне помочь с такой темой: программа на языке С++ которая будет взламывать какое-либо зашифрованное методом Цезаря слово простым перебором символов английского алфавита.
Т. е. допустим, что имеется шифрованное слово "KHOOR", мы не знаем какой ключ и не знаем какое слово должно получится в конце. Но методом сдвига каждого символа на единицу далее нам выдаст список из 26 вариантов (кол-во букв английского алфавита) из которых и будет виден один правильный вариант исходного слова. Исходное слово "Hello" и ключ - 3 для этого случая.
Заранее благодарю за помощь.
Извиняюсь, если где-то выразился неправильно я в программировании не особо силен.

Всё элементарно гуглится

C++:
#include<iostream>
using namespace std;

//function to encrypt the plain text
string encrypt(string x,int n)
    {
    string cipher="";

    for(int i=0;i<x.length();i++)
        {
        if(isupper(x[i]))
            cipher += (x[i] + n - 65)%26 + 65;
        else if(islower(x[i]))
            cipher += (x[i] + n - 97)%26 + 97;
        else
            cipher += x[i];
        }
    return cipher;
    }

//function to decrypt the cipher text using brute force attack
void decrypt(string x)
    {
    string text;
    for(int n=0;n<26;n++)
        {
        text = "";
        for(int i=0;i<x.length();i++)
            {
            if(isupper(x[i]))
                {
                if((x[i] - n - 65)<0)
                    text += 91 + (x[i] - n - 65);
                else
                    text += (x[i] - n - 65)%26 + 65;
                }
            else if(islower(x[i]))
                {
                if((x[i] - n - 97) < 0)
                    text += 123 + (x[i] - n - 97);
                else
                    text += (x[i] - n - 97)%26 + 97;
                }
            else
                text += x[i];
            }
        cout << "plain text for key " << n << " :- " << text << endl;
        }
    }

int main()
{
int key;
string text;
cout << "enter text:- ";
getline(cin,text);

string cipher = encrypt(text,key);
cout << "cipher text :- " << cipher << endl << endl;

decrypt(cipher);
}
 

Rook

Codeby Team
Red Team
09.01.2019
727
718
BIT
4
Нашел в инете
C++:
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    int i = 0, k;
    char ABC[] = { 'А','Б','В','Г','Д','Е','Ж','З','И',
                'Й','К','Л','М','Н','О','П','Р','С',
                'Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ъ',
                'Ы','Ь','Э','Ю','Я','_','.',',','0',
                '1','2','3','4','5','6','7','8','9' };
    char msg[80];
    cout << "Введите сообщение, которое будет закодировано: " << endl;
    cin.getline(msg, 80);
    cout << "\nВведите сдвиг:" << endl;
    cin >> k;
    cout << endl;
    char* begin = ABC;
    char* end = ABC + sizeof(ABC);
    for (; msg[i]; ++i)
    {
        char* ch = find(begin, end, msg[i]);
        if (ch != end) msg[i] = *(begin + (ch - begin + k) % sizeof(ABC));
    }
    cout << "Полученное закодированное сообщение: " << endl;
    cout << msg << endl;
    return 0;
}
 

DrLamer

New member
07.09.2020
4
0
BIT
0
Спасибо вам обоим большое за помощь) По всей видимости пользоваться интернетом я так и не научился
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!