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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.10.2012, 14:19   #1
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию c Xor

Приветствую!
Не могу понять почему не работает код
Код:
#include <stdio.h>
int main()
{
  char string[11]="A nice cat";
  char key[11]="ABCDEFGHIJ";
  char out[11] = { 0 };
  int i;
  for(i=0; i<10; i++)
  {
    out[i]=string[i]^key[i];
  }
  printf("%s", out);
  return 0;
}
Объясню что я хочу: мне нужно зашифровать xor'ом строку, и вывести её полность так, что бы то что было выведенно можно было подставить в переменную string и расшифровать(те мне не нужен массив из шифрованных символов).
frommars вне форума Ответить с цитированием
Старый 03.10.2012, 14:39   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

А Вас не смущает, что в результета XOR высоковероятно получатся НЕПЕЧАТНЫЕ символы?! Как Вы их собираетесь выводить и подставлять?!

а ещё, могу ошибаться, но строки в C являются нуль-термитированными, тогда полученный в результате кодирования 0x00 "обрежет" оставшуюся часть строки.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2012, 14:45   #3
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
А Вас не смущает, что в результета XOR высоковероятно получатся НЕПЕЧАТНЫЕ символы?! Как Вы их собираетесь выводить и подставлять?!

а ещё, могу ошибаться, но строки в C являются нуль-термитированными, тогда полученный в результате кодирования 0x00 "обрежет" оставшуюся часть строки.
о 0х00 не подумал... не подскажете как этот вопрос решить?
frommars вне форума Ответить с цитированием
Старый 03.10.2012, 15:37   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
о 0х00 не подумал... не подскажете как этот вопрос решить?
1) для преобразования использовать что-то, что не является Null-Treminated (массив из char, например)
2) смотрите в сторону преобразования(кодирования) BINARY -> TEXT. самые известные это старое доброе UUE, либо, более современное BASE64 (входит в стандарт MIME). Думаю, что Вы легко найдёте библиотеки(или готовый) код кодирования/декодирования в BASE64. (на крайний случай за пару часов можно по спецификации написать самостоятельно)


p.s. я в C/C++ не соображаю, поэтому более предметно помочь не смогу..
Serge_Bliznykov вне форума Ответить с цитированием
Старый 03.10.2012, 18:30   #5
frommars
Форумчанин
 
Регистрация: 02.07.2011
Сообщений: 144
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
1) для преобразования использовать что-то, что не является Null-Treminated (массив из char, например)
2) смотрите в сторону преобразования(кодирования) BINARY -> TEXT. самые известные это старое доброе UUE, либо, более современное BASE64 (входит в стандарт MIME). Думаю, что Вы легко найдёте библиотеки(или готовый) код кодирования/декодирования в BASE64. (на крайний случай за пару часов можно по спецификации написать самостоятельно)


p.s. я в C/C++ не соображаю, поэтому более предметно помочь не смогу..
вот я думал накрыть сверху
Код:
   BIO *bmem, *b64;
   BUF_MEM *bptr;

  b64 = BIO_new(BIO_f_base64());
   bmem = BIO_new(BIO_s_mem());
   b64 = BIO_push(b64, bmem);
   BIO_write(b64, input, length);
   BIO_flush(b64);
   BIO_get_mem_ptr(b64, &bptr);

  char *buff = (char *)malloc(bptr->length +1);
  memcpy(buff, bptr->data, bptr->length);
  buff[bptr->length] = 0;
 
  BIO_free_all(b64);[

//линковка /lib/libcrypto.so
но есть и в этом минусы...

спасибо Вам за дускуссию, вопрос решён.

Последний раз редактировалось frommars; 03.10.2012 в 18:44.
frommars вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм XOR SOUR47 Общие вопросы C/C++ 16 15.06.2011 03:14
вопрoс по XOR whystr Общие вопросы Delphi 1 08.01.2011 18:05
XOR шифрование. 0479 Помощь студентам 4 14.09.2010 16:24
Ох уж эти OR, AND, XOR! NSV Свободное общение 6 27.03.2010 10:38