Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

14.05.2009, 18:58
|
|
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме: 19571
Репутация:
0
|
|
Биты и байты в C++ B.
Помогите вот с такой задачей в C++ B.
есть Ansi строка из 7-ми символов. То есть 7 байт.
Надо сделать её длинной в 8 байт, вставив в исходную строку нулевой бит через каждые 7 бит.
|
|
|

14.05.2009, 19:44
|
|
Новичок
Регистрация: 04.08.2008
Сообщений: 29
Провел на форуме: 167800
Репутация:
15
|
|
А в чем проблема то? И зачем это нужно, если не секрет?
|
|
|

14.05.2009, 19:54
|
|
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме: 19571
Репутация:
0
|
|
В том что я не понимаю как это сделать ))) Плохо понимаю как! )
А надо это для создания двух ключей для DES в алгоритме LM-хеширования.
|
|
|

14.05.2009, 20:08
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
нулевой бит? Насколько я помню в DES этот бит нужен для того чтобы проверить точность ключа. т.е. этот бит ставится 1 когда кол-во 1-х битов нечетное и ставится =0 когда кол-во четное. (что не помню примерно так)
А вообще подобная вешь делается сдвигом на асме проще это делать.
|
|
|

14.05.2009, 20:11
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
// берешь исходный бит
int src_bit = src_char & 0x01;
// вставить нулевой бит
src_char <<= 1;
ну а дальше по обстоятельствам. можешь собирать перемещенные биты в новый чар
new_char |= src_char & 0x01;
new_char <<= 1;
|
|
|

14.05.2009, 20:16
|
|
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме: 19571
Репутация:
0
|
|
slesh
Я же пока только ключ делаю для DES шифрования. А для того что бы его сделать, мне надо из 7 байт сделать 8. как раз используя этот нулевой символ.
Надеюсь я вообще правильно понял алгоритм LM - хеша.
|
|
|

14.05.2009, 20:19
|
|
Новичок
Регистрация: 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 бит найти..
|
|
|

14.05.2009, 20:21
|
|
Новичок
Регистрация: 13.05.2009
Сообщений: 10
Провел на форуме: 19571
Репутация:
0
|
|
И вот дополнительный вопрос который меня мучает.. Как потом из AnsiString с этим битовыми выражениями сделать ключ для DES типа "unsigned long"?
|
|
|

14.05.2009, 20:26
|
|
Постоянный
Регистрация: 16.08.2006
Сообщений: 640
Провел на форуме: 1354067
Репутация:
599
|
|
анси строка по сути своей можно привести к char*, т.е. к обычному массиву байтов. сначала получи массив символов. дальше с каждым байтом работаешь как с элементом массива. или я чего то не понимаю в условии?
|
|
|

14.05.2009, 20:29
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
а вообще добирайся до битов через сишный возможности ти
Код:
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)
|
|
|
|