Модераторы: bsa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> HEX операции и их вывод 
:(
    Опции темы
eXa
Дата 21.1.2008, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



XOR шифрование

Код

int main()
{
 char *Name = "string";
 char *Password = "test";
 char *Result;
 
 Result = (char*)malloc(strlen(Name));
 strncpy(Result, Name, strlen(Name));

 unsigned int a = 0, b = 0;  
    while (Result[a])
    {
        b = 0;
        while (Password[b]) 
        {
            Result[a] ^= (Password[b] + (a*b)); 
            b++; 
        }
        a++; 
    }
    for (int i = 0; i<strlen(Result); i++) { 
        printf ("%02X ", (unsigned)Result[i]); }
        printf ("\r\n");
        printf ("%s\r\n", Result);
            
}



Печать:
65 64 6C 71 FFFFFF88 FFFFFF87
edlqИЗ

Откуда FFFFFF, причём появляются случайно, могуть быть при печати а могут и отсутсвовать?
Былоб хорошо почитать статью по  байтами в CPP, как правильно создавать структуры типов WORD, DWORD, BYTE; копировать в массив тд и тп. Мои поиски ничего не дали...
 



PM MAIL   Вверх
JackYF
Дата 21.1.2008, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(eXa @  21.1.2008,  19:32 Найти цитируемый пост)
strlen(Result)

strlen бесполезна к шифрованным строкам, так как она ищет символ 0, которого теперь в строке нет. Сохраняй длину в переменной.




--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
eXa
Дата 21.1.2008, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



окэ, а чем отличается strlen от sizeof? Обычно при выполнение этих опреаций над строкой, результаты одинаковые
PM MAIL   Вверх
War_Chief
Дата 21.1.2008, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 39
Регистрация: 10.7.2007
Где: Украина,Киев

Репутация: нет
Всего: нет



eXa, 
sizeof возвращает размер занимаемой памяти.
С ее помощью можно узнать например сколько байтов занимает тип int, или можно узнать сколько в памяти места занимает конкретная переменная!
А strlen возвращает длину строки!
PM MAIL ICQ   Вверх
eXa
Дата 21.1.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



ясно, спасиб... а что насчёт 1 поста?
PM MAIL   Вверх
JackYF
Дата 21.1.2008, 22:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(eXa @  21.1.2008,  20:55 Найти цитируемый пост)
а что насчёт 1 поста? 

прочитай мой пост выше, пожалуйста.


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
eXa
Дата 21.1.2008, 22:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



прочиталO_o поправил
Код

 int len = strlen(Name); 
 strncpy(Result, Name, len);
 for (int i = 0; i<len; i++) 


Но "F" при печати не исчезли, да и вообще интересно почему они вылезают 

Это сообщение отредактировал(а) eXa - 21.1.2008, 22:21
PM MAIL   Вверх
JackYF
Дата 21.1.2008, 22:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


полуавантюрист
****


Профиль
Группа: Участник
Сообщений: 5814
Регистрация: 28.8.2004
Где: страна тысячи озё р

Репутация: 6
Всего: 162



Цитата(eXa @  21.1.2008,  21:20 Найти цитируемый пост)
int len = strlen(Name); 

сие нужно делать до шифрации


--------------------
Пожаловаться на меня как модератора можно здесь.
PM MAIL Jabber   Вверх
PPS05
Дата 21.1.2008, 23:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 262
Регистрация: 6.11.2005
Где: Беларусь, Минск

Репутация: 1
Всего: 7



К слову о 1-ом посте: тип char - знаковый и его приведение к unsigned уже поздно... Можно вот так:
Код

// Строка 22
((unsigned char*)Result)[i]


P.S. Как раз сегодня столкнулся сам... какая досада...


--------------------
Ушел с форума и не вернулся.
PM MAIL ICQ   Вверх
eXa
Дата 22.1.2008, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 1.12.2006

Репутация: нет
Всего: нет



Цитата

сие нужно делать до шифрации

сие делаю сразу после объявленния переменных

PPS05 да так нет лишнего символа "F", я как понимаю где он присутсовал те значения были отрицательны?O_o

Это сообщение отредактировал(а) eXa - 22.1.2008, 00:51
PM MAIL   Вверх
bsa
Дата 22.1.2008, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 85
Всего: 196



Цитата(eXa @ 22.1.2008,  00:50)
PPS05 да так нет лишнего символа "F", я как понимаю где он присутсовал те значения были отрицательны?O_o

да.
Код
char a = -1;
int y = a; //a = -1 (0xFFFFFFFF)
unsigned x = a; // x = (2^32 - 1) (или 0xFFFFFFFF)

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Для новичков"
JackYF
bsa

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0531 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.