![]() |
|
Модераторы: bsa |
![]()
|
|
| MrImho |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Здравствуйте уважаемые форумчане. Хочу закодировать файл XOR методом, собственно вот код, в чем ошибка?
Есть файл с текстом, в начале его шифрую и записываю во 2 файл, затем открываю его и расшифрую и записываю в 3, но текст 1 и 3 файлов не совпадают, а вот почему не знаю. Буду благодарен, если кто мне поможет. |
|||
|
||||
| MrImho |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Здравствуйте помогите пожалуйста с возникшей проблемой, описаной в этом топике:
http://forum.vingrad.ru/forum/topic-306911...y2192412/0.html Сделал копию в этом разделе, потому, что в предыдущем не получил ответа. |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Делать было нечего накидал готовый вариант.
Теперь замечания: Вы новичек, но Вы должны знать значения слов которые произносите. Это к кешированию не имеет абсолютно никакого отношения. Называется шифрование. Непонятно, зачем Вы использовали wchar_t ? Учите матчасть. Написал код согласно Вашему, естественно читать файлы по одному символу плохо, но думаю так Вам будет проще понять и разобраться. Научитесь пользоваться отладчиком и на небольших примерах отладочным выводом. Научитесь сами решать свои проблемы. И еще раз учите матчасть. |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Ответил в Вашей новой теме.
|
|||
|
||||
| bsa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Это сообщение отредактировал(а) bsa - 4.8.2010, 10:37 |
||||
|
|||||
| MrImho |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
В том, то и дело, что с char я уже написал код и он работает на ура, но мне нужен UNICODE, поэтому с wchar_t, но почему-то не работает. Хотя алгоритм вроде тот-же. С char то как раз таки все просто, а вот UNICOD замучал!
|
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Стоп а каким концом юникод к двоичным данным. Объясните может быть зачем вам нужен юникод? Я абсолютно уверен что в данном случае юникод Вам не нужен. Это сообщение отредактировал(а) cutwater - 4.8.2010, 13:59 |
|||
|
||||
| MrImho |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Если бы был не нужен, я бы обошелся, а так........ Ладно походу надо ещё помучатся, ладно в топку тему, толку от неё.
Это сообщение отредактировал(а) MrImho - 4.8.2010, 15:53 |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Вы все таки попытайтесь объяснить? Мне кажется, что Вы очень сильно не понимаете что делаете, поэтому вдруг возникает юникод... там где ему совсем не место. |
|||
|
||||
| djamshud |
|
|||
![]() Пердупержденный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 23.11.2009 Репутация: 4 Всего: 39 |
MrImho, ксор-шифрованию совершенно пофиг, как софт интерпретирует данные - как utf-8, utf-16 или даже cp1251.
-------------------- 'Cuz I never walk away from what I know is right Alice Cooper - Freedom |
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
Поясню, тот пример который я давал, работает с абсолютно любыми данными, будь то текст в любой кодировке, будь то двоичные данные. Внезапно возникает вопрос, при чем тут еще одна сущность, вы вводите понятие юникода туда, где оно совершенно не нужно. Или я чего-то не понимаю в этой жизни.
|
|||
|
||||
| MrImho |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 31 Регистрация: 31.7.2009 Репутация: нет Всего: нет |
Да Вы правы оно работает с любыми данными но мне нужны не char а wchar_t
в программе используется в wchar_t и только!!! а на выходе при расшифровке я получу char, тогда другой вопрос, как все это дело перевести в wchar_t? Я получу при расшифроке массив char[...] и что мне с ним делать? как я воспользуюсь русским шрифтом? Зачем мне нужно решение, результатом которого я не смогу воспользоваться. Ещё раз повторяю. Есть (предварительно мною закодированый) файл, программа должна его раскодировать и с этим массивом уже работать (парсить, создавать древо данных и т.д.). А в этоге при раскодировке получается char и как мне его в wchar_t перевести? И ещё при кодировании файла он сохраниться в другой кодировке, а когда программа откроет его в UNICODE, ох представляю как "белиберда" получится. Вы сами попробуйте. У меня "белиберда". Добавлено через 7 минут и 3 секунды Щас попробую перевести данные из char в wchar_t через union если все получится отпишусь В любом случае спасибо за все ваши ответы. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
MrImho, ты про преобразование типов ничего не слышал?
|
|||
|
||||
| cutwater |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 592 Регистрация: 24.6.2008 Репутация: 2 Всего: 10 |
По-моему это будет вряд ли работать. MrImho, Вы не с той стороны подходите к проблеме. У Вас есть двоичные данные на входе, двоичные данные на выходе. Вам нужно банально не XOR-шифрование реализовать через wchar_t а просто из полученного результата char* получить wchar_t* . Эта задача решается элементарно, без костылей. Собственно вот один из моих старых примеров, разберитесь в нем. И у Вам только остается сложить два решения вместе. http://dumpz.org/16714/ Добавлено через 13 минут и 14 секунд
Да и еще постарайтесь разобраться с теорией кодировок. При кодировании файла у вас на выходе будут двоичные данные. Вы их конечно можете представить в любой кодировке, только смысла эта операция не имеет. Ибо на данном этапе вам необходимо оперировать двоичными данными. Фактически у вас получается цепочка: 1) строка wchar_t -> 2) двоичные данные -> 3) шифрование -> 4) двоичные данные -> 5) дешифрование -> 6) двоичные данные -> 7) текст wchar_t кодировка важна лишь на этапах 1-2 и 6-7 то есть от юникода к данным в определенной кодировке и обратно. конечно стоит заметить что возможно работать с wchar_t и напрямую, однако так как тип wchar_t платформозависим и его размер зависит от платформы и компилятора, поэтому стоит рассматривать wchar_t строку как абстрактную юникод-строку, которую необходимо представить в определенной кодировке. Добавлено через 13 минут и 40 секунд bsa, может быть я где-то заблуждаюсь. поправьте если что не так. |
|||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |