![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| admsasha |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Пытаюсь сделать шифрование через SLL, проблема в том, что если задавать строку для шифрования большую, то строка обрезается (маленькие строки нормально работают). Помогите разобраться что и где я ошибся
Encrypt и Decrypt всяты с доки по openssl myEncrypt и myDecrypt - это мои функии, в качестве параметра string и выводят string.
вывод
Это сообщение отредактировал(а) admsasha - 18.6.2011, 18:36 |
||||
|
|||||
| afiskon |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 294 Регистрация: 31.3.2011 Где: Россия, Москва Репутация: 1 Всего: 4 |
Блочные шифры шифруют данные используя характерный для них размер блока. Для шифрования данных используются различные режимы шифрования. Напримем, CTR. Описание есть на википедии.
Добавлено через 2 минуты и 31 секунду
А за это вас вообще нужно жестоко наказать! c_str() возвращает const char, от которого вы решили избавиться приведением типов в стиле Си. Если хотите как-то его менять - выделяйте память и работайте с копией! Добавлено через 3 минуты и 32 секунды И память, выделенную с помощью malloc() не освободили. Подучите-ка язык для начала... Добавлено через 5 минут и 28 секунд Хотя вижу, что у вас CFB. Но учитывая другие ошибки, вообще удивительно, что оно работает. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
скомпиль эти коды: http://www.codealias.info/technotes/des_en..._simple_example
они у тебя работают? есть подозрение, что std::string при инициализации тут:
обрезает исходную строку из-за того что встречает '\0' или что-то в этом роде. |
|||
|
||||
| admsasha |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
afiskon, Это я экспериментировал всяко разно, вот и получилось что без очистки памяти.
boostcoder, Да, от туда и брал, если подставлять там этот же кусок для шифрования, то всё нормально работает. Ошибка, явно, где то в моем переходе string-> char. Только не пойму где. переписал фунцию, и добавил отладку
Вывод
Это до всяких string Самое интересное, если после strncpy поставить "text[144]='1';" То код, работает нормально. Будто бы и вправду \0 существует, но строка вообще сплошная, да и strlen показывает все 190 символов. Это сообщение отредактировал(а) admsasha - 19.6.2011, 08:09 |
||||
|
|||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
admsasha, ну так инициализируй строку нормально!
|
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
boostcoder, Это никак не помогло.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
ну хз что ты там накодил. у меня все работает.
|
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
||||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
показывай. я не телепат.
|
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Причем тут телепат ? В самом верху был весь код + одна правка
Вот, что в итоге получилось
Это сообщение отредактировал(а) admsasha - 19.6.2011, 10:41 |
|||
|
||||
| mes |
|
||||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
на месте завершающего символа, у Вас мусор..
http://www.cplusplus.com/reference/clibrary/cstring/strncpy/ да и нужен ли +1 ? ведь Вы на шифровку передаете массив символов, а не си-строку.. |
||||
|
|||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Если правильно понял, то вот что получилось.
Но это не помогло. |
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Окончательный вариант, вроде как работает теперь как нужно
Всем, кто пытался помочь, спасибо ! |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 144 Всего: 250 |
тогда уж логично [..length()+1].. судж по всему должно быть : (const char *, const char*, хотя код смотрел только мельком.. |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
вот о чем я говорил:
http://liveworkspace.org/code/f9e8c0f7fca2...11720d3d4c0e913 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |