Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 00:13   #1
nec117
Форумчанин
 
Регистрация: 01.10.2008
Сообщений: 266
Вопрос Помогите с расшифровкой

Вот программа, которая шифрует файл ксором.
Код:
#include <stdio.h>

int main(int argc, char *argv[])
{
 FILE* fp,*fo;
 unsigned char key[16];
 unsigned char buf[16];
 int i,n;

 for(i=0;i<16;i++)key[i]=atoi(argv[3])^0xAA^i;

 fp = fopen(argv[1],"rb+");
 fo = fopen(argv[2],"wb+");
 n=strlen(argv[1]);
 for(i=0;i<n;i++)
	 argv[1][i]^=atoi(argv[3])^0xAA^i;
 fwrite(&n,sizeof(n),1,fo);
 fwrite(argv[1],1,n,fo);
 do{
  n=fread(buf,1,16,fp);
  for(i=0;i<n;i++)
	  buf[i]^=key[i];
  fwrite(buf,1,n,fo);
 }while(!feof(fp));


 fclose(fp);
 fclose(fo);
}
подскажите пожалуйста, а как теперь файл обратно расшифровать? читал что нужно заново его отксорить, но не получилось. Как дешифруется ксор?
nec117 вне форума Ответить с цитированием
Старый 05.12.2009, 00:20   #2
NiCola999
Не
Участник клуба
 
Регистрация: 29.10.2009
Сообщений: 1,456
По умолчанию

Код:
555 ^ 123 = 592
592 ^ 123 = 555
чтобы расшифровать надо сделать ксор с тем ключом, с которым он был зашифрован

в твоем случае

Код:
...
for(i=0;i<16;i++)key[i]=atoi(argv[3])^0xAA^i;
...
buf[i]^=key[i];
сначало тебе надо расксорить ключ а затем расшифровывать

Последний раз редактировалось NiCola999; 05.12.2009 в 00:30.
NiCola999 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите с расшифровкой. nec117 Безопасность, Шифрование 0 04.12.2009 23:58