Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt] QByteArray + blowfish, Очередной велосипед blowfish 
:(
    Опции темы
zayacnk
Дата 11.2.2010, 21:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Всем привет!
Столкнулся с проблемой, при присваивании зашифрованного значения из QByteArray в unsigned long. Версия Qt 4.6
Компилятор никаких ошибок не выдает, странность состоит в том, что когда в datal и datar заносятся шифрованные blowfish(ем) значения, то в последних двух циклах в переменные возвращается непойми что, а когда заносятся не шифрованные значения, то все норм.

Вот проверочный код:
Код

QByteArray tmpInBuff;
    unsigned long datal;
    unsigned long datar;
    int k,j;

    k = 0;
    j = 0;
    datal = 658604462;
    datar = 1173944192;

    tmpInBuff.resize(8);

    for (k = j + 3; k >= j; k--){
        tmpInBuff[k] = datal & 0x00ff;
        datal >>= 8;
    }
    for (k = j + 7; k >= (j + 4); k--){
        tmpInBuff[k] = datar & 0x00ff;
        datar >>= 8;
    }

    datal = 0;
    datar = 0;
    for (k = j; k < (j + 4); ++k)
        datal = (datal << 8) | tmpInBuff[k];
    for (k = (j+4); k < (j + 8); ++k)
        datar = (datar << 8) | tmpInBuff[k];


Нешифрованные значения:
datal = 825373492
datar = 892745528

Шифрованные значения:
datal = 658604462
datar = 1173944192

datal + datar = строка "12345678"

У кого нибудь есть идеи?
PM MAIL   Вверх
SABROG
Дата 11.2.2010, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А перед последними двумя циклами k и j не нужно обнулять? Это так задумано?
---
Понял, j обнуляет k.

С обычным Си массивом всё нормально работает? Просто я в коде не вижу необходимости динамического добавления данных.

Цитата

datal + datar = строка "12345678"


В Unicode или ASCII? Как определяется "непойми что"? Попыткой вывести содержимое как текст или побайтовый анализ каждого кода символа в отдельности?

Это сообщение отредактировал(а) SABROG - 11.2.2010, 22:19


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
zayacnk
Дата 11.2.2010, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



С обычными массивами не порбовал, надо будет попробывать. 

Не пробывал, т.к. идея такова, в функцию отправляется QByteArray inBuff получаем QByteArray outBuff. Т.е. пользователю надо заполнить только входной буфер, на выходе получет в outBuff или зашифрованное или расшифрованное сообщение из inBuff.

А код приведенный выше, это не оригинал, а выжимка из класса, чтоб показать, преобразования.

если нужен будет исходник, то скину.
PM MAIL   Вверх
SABROG
Дата 11.2.2010, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Hacker
****


Профиль
Группа: Завсегдатай
Сообщений: 2481
Регистрация: 18.9.2006

Репутация: 81
Всего: 91



А зачем тебе вообще с алгоритмом заморачиваться, если в OpenSSL есть Blowfish? Если собирал Qt с QSslSocket то можешь и методы OpenSSL использовать. Разве только для того, чтобы не тянуть QtNetwork4.dll с программой. Но тогда любой модуль OpenSSL можно тупо подключить через LIBS += в .pro файле...


--------------------
Национальная группа Russian Federation на QtCentre.
PM MAIL   Вверх
zayacnk
Дата 11.2.2010, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 11.2.2010

Репутация: нет
Всего: нет



Цитата(SABROG @ 11.2.2010,  22:02)
В Unicode или ASCII? Как определяется "непойми что"? Попыткой вывести содержимое как текст или побайтовый анализ каждого кода символа в отдельности?

"непойми что" - определяю анализом в дебагере.
По поводу кодировок может я лоханулся, как помню в Qt под линем используется UTF-16, а это Unicode если не ошибаюсь
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0664 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.