Попытка шифрования путем сдвига n-ого кол-ва битов ( с++ )

#include <iostream>
#include <string>
using namespace std;
unsigned char rrotate(unsigned char val, int n);
unsigned char lrotate(unsigned char val, int n);
void show_binary(unsigned int u);
int main()
{
     int q=0;
    cout<<"Введите количество сдвигов(бит, это и будет ключем): ";
    cin>>q;
 char ch = 'T';
cout << "Исходное значение в двоичном коде:\n";
show_binary(ch);
cout << "Шифрование путем сдвига битов влево:\n";
for(int i=0; i < 8; i++) {
ch = rrotate(ch, q);
show_binary(ch);
}
cout << "Разшифровка путем сдвига битов вправо:\n";
for(int i=0; i < 8; i++) {
ch=lrotate(ch, q);
show_binary(ch);
}
return 0;
}
unsigned char lrotate(unsigned char val, int n)
{
unsigned int t;
t=val;
    for(int i=0; i<n; i++){
t = t << 1;
if(t & 256)
t = t | 1;
}
return t;
}
unsigned char rrotate(unsigned char val, int n) {
unsigned int t;
t=val;
t = t<<8;
    for(int i=0;i<n;i++){
t=t>>1;
if(t & 128)
t = t | 32768;
}
    t= t>>8;
    return t;
}

    void show_binary(unsigned int u) {
int t;
for (t=128; t>0;t=t/2)
 if(u & t) cout<<"1";
     else cout<<"0";
cout<<"\n";
}

Программа выполняет шифрование символа в двоичном коде q-е кол-во раз. Можно ли сделать само шифрование с помощью строки, например. Не могу понять реально ли это, и как это можно реализовать. ( Скорее всего я не очень понятно выразился что я хочу сделать, заранее прошу прощение ) Подскажите, пожалуйста, путь истинный на решение этой задачи ( если можно с объяснением ) P.S. это не какое-то задание, я просто решил это сделать, и не прошу делать это за меня!


Ответы (0 шт):