ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Биты и байты в C++ B.
  #1  
Старый 14.05.2009, 18:58
Аватар для Yazzer
Yazzer
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме:
19571

Репутация: 0
По умолчанию Биты и байты в C++ B.

Помогите вот с такой задачей в C++ B.

есть Ansi строка из 7-ми символов. То есть 7 байт.
Надо сделать её длинной в 8 байт, вставив в исходную строку нулевой бит через каждые 7 бит.
 
Ответить с цитированием

  #2  
Старый 14.05.2009, 19:44
Аватар для SmanxX1
SmanxX1
Новичок
Регистрация: 04.08.2008
Сообщений: 29
Провел на форуме:
167800

Репутация: 15
По умолчанию

А в чем проблема то? И зачем это нужно, если не секрет?
 
Ответить с цитированием

  #3  
Старый 14.05.2009, 19:54
Аватар для Yazzer
Yazzer
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме:
19571

Репутация: 0
По умолчанию

В том что я не понимаю как это сделать ))) Плохо понимаю как! )

А надо это для создания двух ключей для DES в алгоритме LM-хеширования.
 
Ответить с цитированием

  #4  
Старый 14.05.2009, 20:08
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

нулевой бит? Насколько я помню в DES этот бит нужен для того чтобы проверить точность ключа. т.е. этот бит ставится 1 когда кол-во 1-х битов нечетное и ставится =0 когда кол-во четное. (что не помню примерно так)
А вообще подобная вешь делается сдвигом на асме проще это делать.
 
Ответить с цитированием

  #5  
Старый 14.05.2009, 20:11
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

// берешь исходный бит
int src_bit = src_char & 0x01;
// вставить нулевой бит
src_char <<= 1;

ну а дальше по обстоятельствам. можешь собирать перемещенные биты в новый чар
new_char |= src_char & 0x01;
new_char <<= 1;
 
Ответить с цитированием

  #6  
Старый 14.05.2009, 20:16
Аватар для Yazzer
Yazzer
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме:
19571

Репутация: 0
По умолчанию

slesh
Я же пока только ключ делаю для DES шифрования. А для того что бы его сделать, мне надо из 7 байт сделать 8. как раз используя этот нулевой символ.

Надеюсь я вообще правильно понял алгоритм LM - хеша.
 
Ответить с цитированием

  #7  
Старый 14.05.2009, 20:19
Аватар для Yazzer
Yazzer
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме:
19571

Репутация: 0
По умолчанию

Цитата:
Сообщение от Ra$cal  
// берешь исходный бит
int src_bit = src_char & 0x01;
// вставить нулевой бит
src_char <<= 1;

ну а дальше по обстоятельствам. можешь собирать перемещенные биты в новый чар
new_char |= src_char & 0x01;
new_char <<= 1;


У меня Ansi строка 7 байт, как выбрать первые 7 бит, что бы туда вставить нулевой бит? И потом следующие 7 бит найти..
 
Ответить с цитированием

  #8  
Старый 14.05.2009, 20:21
Аватар для Yazzer
Yazzer
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме:
19571

Репутация: 0
По умолчанию

И вот дополнительный вопрос который меня мучает.. Как потом из AnsiString с этим битовыми выражениями сделать ключ для DES типа "unsigned long"?
 
Ответить с цитированием

  #9  
Старый 14.05.2009, 20:26
Аватар для Ra$cal
Ra$cal
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме:
1354067

Репутация: 599


По умолчанию

анси строка по сути своей можно привести к char*, т.е. к обычному массиву байтов. сначала получи массив символов. дальше с каждым байтом работаешь как с элементом массива. или я чего то не понимаю в условии?
 
Ответить с цитированием

  #10  
Старый 14.05.2009, 20:29
Аватар для slesh
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

а вообще добирайся до битов через сишный возможности ти
Код:
typedef struct _KEY
{
 char b1:1;
 char b2:2;
 char b3:3;
 char b4:4;
 char b5:5;
 char b6:6;
 char b7:7;
 char b8:8;
} TKEY,*PKEY;


int main(int argc, char* argv[])
{
 PKEY keybit;
 char data[8];
 data[0]=127;
 keybit=(PKEY)&data[0];
 keybit->b1=1; // вот так вот ты можешь добраться до битов
 return 0;
}
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ