По заданию нужно реализовать шифр блочной одинарной перестановки.
Например, вводится слово "СТРЕЛКА" и ключ "2 3 1". В результате получается "ТРСЛКЕЭЭА". То есть, исходное слово делится на блоки по 3 буквы, если символов в последнем блоке не достаёт, то добавляется символ "Э": "СТР", "ЕЛК" "АЭЭ".
Я реализовал шифр простой одинарной перестановки, но блочной что-то не выходит. Как его реализовать?
Моя реализация шифра простой одинарной перестановки:
#include <iostream>
#include <conio.h>
#include <string>
#include <windows.h>
using namespace std;
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
string message;
const int n = 8;
int key[n];
cout << "Введите текст: ";
cin >> message;
cout << "Введите ключ (размер ключа = 8): ";
for (int i = 0; i < n; i++)
{
cin >> key[i];
}
string new_message = "";
for (int i = 0; i < n; i++) {
new_message += message[key[i] - 1];
}
cout << "Зашифрованный текст: " << new_message;
_getch();
return 0;
}