Попытка шифрования путем сдвига 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. это не какое-то задание, я просто решил это сделать, и не прошу делать это за меня!