![]() |
Биты и байты в C++ B.
Помогите вот с такой задачей в C++ B.
есть Ansi строка из 7-ми символов. То есть 7 байт. Надо сделать её длинной в 8 байт, вставив в исходную строку нулевой бит через каждые 7 бит. |
А в чем проблема то? И зачем это нужно, если не секрет?
|
В том что я не понимаю как это сделать ))) Плохо понимаю как! )
А надо это для создания двух ключей для DES в алгоритме LM-хеширования. |
нулевой бит? Насколько я помню в DES этот бит нужен для того чтобы проверить точность ключа. т.е. этот бит ставится 1 когда кол-во 1-х битов нечетное и ставится =0 когда кол-во четное. (что не помню примерно так)
А вообще подобная вешь делается сдвигом на асме проще это делать. |
// берешь исходный бит
int src_bit = src_char & 0x01; // вставить нулевой бит src_char <<= 1; ну а дальше по обстоятельствам. можешь собирать перемещенные биты в новый чар new_char |= src_char & 0x01; new_char <<= 1; |
slesh
Я же пока только ключ делаю для DES шифрования. А для того что бы его сделать, мне надо из 7 байт сделать 8. как раз используя этот нулевой символ. Надеюсь я вообще правильно понял алгоритм LM - хеша. |
Цитата:
У меня Ansi строка 7 байт, как выбрать первые 7 бит, что бы туда вставить нулевой бит? И потом следующие 7 бит найти.. |
И вот дополнительный вопрос который меня мучает.. Как потом из AnsiString с этим битовыми выражениями сделать ключ для DES типа "unsigned long"?
|
анси строка по сути своей можно привести к char*, т.е. к обычному массиву байтов. сначала получи массив символов. дальше с каждым байтом работаешь как с элементом массива. или я чего то не понимаю в условии?
|
а вообще добирайся до битов через сишный возможности ти
Код:
|
| Время: 21:55 |