пятница, 12 февраля 2010 г.

Криптография под Qt выпуск 1

В стандартной поставке Qt совсем немного средств для криптографии. По сути все ограничивается одним классом QCryptographicHash.

Этот класс может получать хэш от некоторых данных, представленных в QByteArray, используя алгоритмы Md4, Md5, Sha.
Ну а что такое хэш? Хэш это необратимая последовательность символов, зная которую исходные данные никак не получить. Это удобно для хранения паролей. Хранишь хэш пароля и сравниваешь хэши паролей вместо них самих.
Однако в ряде случаев этого бывает недостаточно. И хочется иметь нормальное обратимое шифрование с ключами.

Порыскал в инете на эту тему, нашел пакет Qt Cryptographic Architecture (QCA).
Обитает он на:
http://delta.affinix.com/qca/
Скачиваем, разворачиваем в %QTDIR%/src/3rdparty/
Далее, configure.exe & nmake & installwin.exe
В результате оно установит Qt feature, т.е. фишку Qt.
Теперь в файле проекта можно написать CONFIG += crypto
И использовать в коде #include <QtCrypto>

На этом пока мое знакомство с QCA закончилось. В дебаге оно почему то не может найти либу qcad.lib, в релизе собирается нормально. Будем разбираться дальше.

Upd:
Для дебага пришлось поправить строку в %QTDIR%/mkspecs/features/crypto.prf
Вместо        windows:LINKAGE = -lqcad
написал         windows:LINKAGE = -lqca2

4 комментария:

  1. спасибо очень полезная статья

    ОтветитьУдалить
  2. configure.exe вылетает. Просит какой-то еще сишный компилятор. В чем может быть проблема? mingw стоит

    ОтветитьУдалить
  3. Я ставил под студией из ее Command Prompt

    ОтветитьУдалить
  4. Для дебага нужно выполнить команду
    configure --debug-and-release
    а не править строки.
    Строки, которые нужно править, это строку с путями, который под виндой после выполнения installwin.bat будут прописаны с обратным слешем. Исправьте их на прямой в названном файле указанного каталога, тогда не будет ошибки file or directory not found
    При сборке под студией возможна ошибка mt.exe с кодом <1F>, перед сборкой выключите защиту Касперского.
    Успехов

    ОтветитьУдалить