
Задача на шифровку в С++
ПОжалуйста сделайте или объясните как делать! Мне нужно сделать шифровку и дешифровку методом битовых манипуляций. В С++....просто я уже в отчаянии 

Самый простой случай - сделать сложение по модулю 2 с какой-то константой. Расшифровка - опять сложение по модулю 2. В Паскале это XOR. В Си - не помню как, возможно ^
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Если честно то я не понял как
...объясни пожалуйста поподробнее или на примере

-
- Сообщения: 106
- Зарегистрирован: 30 авг 2005, 02:53
- Откуда: Санкт-Петербург
- Контактная информация:
Вот 2 функции:
и верти биты как тебе только нравиться 
соответственно тебе нужно будет либо заводить глобальные NumBin[8] и NumDec или слегка переделать на возвращение значений функциями...
Так и есть в С,С++ это ^
пример?
помоему, предельно понятно 
Код: Выделить всё
int Bin2Dec(int N[8])//перевод массива битов в число
{
int i=0;
int NumDec=0;
for(i=7;i>-1;i--){
f(N[i]==1){
NumDec=NumDec+pow(2,7-i);
}
}
return NumDec;
}
void Dec2Bin(int NumDec)//перевод числа в строку бит
{
int i=0;
for(int y=0;y<8;y++){
NumBin[y]=0;
}
i=7;
while(NumDec>0){
NumBin[i]=NumDec%2;
NumDec=NumDec/2;
i--;
}
}

соответственно тебе нужно будет либо заводить глобальные NumBin[8] и NumDec или слегка переделать на возвращение значений функциями...
Хыиуду писал(а):Самый простой случай - сделать сложение по модулю 2 с какой-то константой. Расшифровка - опять сложение по модулю 2. В Паскале это XOR. В Си - не помню как, возможно ^
Так и есть в С,С++ это ^
пример?
Код: Выделить всё
#include<iostream.h>
int main()
{
char temp='s';//будем шифровать s
int hesh;
cout << temp << endl;
hesh=temp;
hesh=hesh^2;
temp=hesh;
cout << temp << endl;
return 0;
}

Жизнь ― это то, что с нами происходит, пока мы строим планы.© Джон Леннон.
эххх...ничего не понял и даже эти проги не запустил 
или я тупой или...я тупой. Может сделаете программу полностью пожалуйста, понимаю что я такой не один и что вам может быть не охото тратить своё время, но всё таки? Век не забуду

или я тупой или...я тупой. Может сделаете программу полностью пожалуйста, понимаю что я такой не один и что вам может быть не охото тратить своё время, но всё таки? Век не забуду

-
- Сообщения: 106
- Зарегистрирован: 30 авг 2005, 02:53
- Откуда: Санкт-Петербург
- Контактная информация:
Простейший способ, но он наврятли удовлетварит кокого ни будь препода в универе...
Если интересно, то могу скинуть свои старые кодеры, которые именно "манипулируют битами", в частности что ни будь в духе шифрации на основе регистра сдвигов или реализации DES... Но всегда куда приятней сделать своими руками 
Код: Выделить всё
#include<iostream.h>
int main()
{
FILE* in;
FILE* out;
char temp;
int hesh;
cout << "c|d\n--> ";
cin >> temp;//вводим 'c' для кодировки файла или 'd' для его дешифрации
if(temp=='c'){
if((in=fopen("in.txt","r"))==NULL){//обрати внимание, что файлеки текстовые и имеют свои определенные имена ;)
cerr << "No input file!\n";
exit(1);
}
out=fopen("code.txt","w");
while((temp=getc(in))!=EOF){//шифруем при помощи XoR (почитай в инете что это ;) ), да можно сделать красиво и в одну строку, но мне лень =)
hesh=temp;
hesh=hesh^2;
temp=hesh;
fprintf(out,"%c",temp);
}
fcloseall();
temp='\0';
}
if(temp=='d'){
if((in=fopen("code.txt","r"))==NULL){
cerr << "No input file!\n";
exit(1);
}
out=fopen("out.txt","w");
while((temp=getc(in))!=EOF){
hesh=temp;
hesh=hesh^2;
temp=hesh;
fprintf(out,"%c",temp);
}
fcloseall();
temp='\0';
}
return 0;
}

Жизнь ― это то, что с нами происходит, пока мы строим планы.© Джон Леннон.
Спасибо большое, только объясни как ей пользоваться...я ввожу "с" и нечего не происходит. Кстати насчёт препода в универе что ему не понравится? 

Интересно, это я чего-то не понял, или здесь даже пароль не используется?
Ни что так не ограничивает фантазию программиста, как компилятор...
Ну, Юлий Цезарь же со своей шифровкой имени себя тоже без пароля обходился, одним алгоритмом 

Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
-
- Сообщения: 106
- Зарегистрирован: 30 авг 2005, 02:53
- Откуда: Санкт-Петербург
- Контактная информация:
MOTOCoder, ну не просили же шифрацию паролем... просто ранее было предложено просто ксорить
ну сам понимаешь, что выкладывать нормальный шифратор как то нелепо 
Хыиуду, он вообще был реальной крутышкой
void_main, если напрячься и взглянуть на код, то можно увидеть следущее.. при выборе 'c' программа "шифрует" содержимое файлика по имени "in.txt" и пишет результат в "code.txt", а при выборе 'd' она читает "code.txt" и пишет результат в "out.txt"
не понравиться абсолютно пофигистичное отношение к заданию
потому как ну ооочень тупо написано.


Хыиуду, он вообще был реальной крутышкой

void_main, если напрячься и взглянуть на код, то можно увидеть следущее.. при выборе 'c' программа "шифрует" содержимое файлика по имени "in.txt" и пишет результат в "code.txt", а при выборе 'd' она читает "code.txt" и пишет результат в "out.txt"

не понравиться абсолютно пофигистичное отношение к заданию

Жизнь ― это то, что с нами происходит, пока мы строим планы.© Джон Леннон.