Название: QCA::Cipher.final Отправлено: Eretic от Ноябрь 27, 2012, 21:07 Приветствую всех кто зашёл в темку.
Очень прошу помочь. По таймеру раз в 5 минут запускается метод. В нём считывается из файла строка, расшифровывается, немного меняется и записывается обратно в файл с шифрованием. Именно на методе QCA::Cipher.final при рашифровке прога падает, но не всегда. Может работать полчаса а может после 5 минут упасть. Пожалуйста помогите найти проблему или хотябы направить на путь истинный. Система Ubuntu 11.04. Это вывод консольный: Код: write file3: "$Jz Íar&nªwB=ÕD Как видно из лога, что пишется и читается одинаковая строка . Но почему final ловит клина не понимаю. Делаю всё точно как здесь: http://qtcoder.blogspot.ru/2010/02/qt-3.html (http://qtcoder.blogspot.ru/2010/02/qt-3.html) Перед открытием файла проверяю можно ли. После записи сразу закрываю файл. Если нужно приведу код. Просто там строк 50 сразу не буду писать. В какие стороны можно смотреть и чем можно воспользоваться? Название: Re: QCA::Cipher.final Отправлено: carrygun от Ноябрь 28, 2012, 05:28 Воспользоваться дебаггером и смотреть что в списке. Сам же знаешь что он ломается из-за выхода за границы списка. Посмотри что в нем и что ты хочешь достать.
Название: Re: QCA::Cipher.final Отправлено: Eretic от Ноябрь 28, 2012, 13:01 Воспользоваться дебаггером и смотреть что в списке. Сам же знаешь что он ломается из-за выхода за границы списка. Посмотри что в нем и что ты хочешь достать. В списке ничего нет. Список получается из строки которая приходит после расшифровки. Код: QCA::SecureArray u = cipher.update(arg); Название: Re: QCA::Cipher.final Отправлено: carrygun от Ноябрь 28, 2012, 14:01 Значит надо смотреть как заполняется твой "res". Я то не телепат.
Название: Re: QCA::Cipher.final Отправлено: Eretic от Ноябрь 29, 2012, 09:28 Значит надо смотреть как заполняется твой "res". Я то не телепат. При чём здесь заполнение res? Не проходит update или final. Если они не проходят то возвращается пустая строка. Значение в неё пишется после final. P.S. Если не смотрел код по ссылке и нет дельного предложения не нужно набивать сообщения. ======================================== Проблему решил. Опишу может кому поможет. Есть такой метод в документации: Код: virtual bool QCA::Cipher::ok ()const [virtual] Для методов же update и final есть булевые переменные(внутри QCA), которые они и заполняют(насколько я понял по дебагу, но особо не вдавался). В какой то момент update не проходит и пишет false. Всё это внутри QCA и лезть туда смысла нет. А вот фрагмент моего кода: Код: //содать 128 битный AES шифр объект используя CBC режим Подумал что нужно поиграться с параметрами. Вот ссылочка:http://ru.wikipedia.org/wiki/Режим_шифрования (http://ru.wikipedia.org/wiki/Режим_шифрования) После изменения режима, всё заработало и больше расшифровка клина не ловит. P.S. причину не нашёл, но главное что в результате код написан и всё работает. Спасибо. Можно закрывать тему. |