Так как оказалось, что наши коммуникации довольно легко просматриваются товарищами из АНБ то похоже что нужно шифровать все коммуникации. Я решил проверить насколько сложно подключить шифрование в разработке Qt приложений. Как оказалось что все совсем несложно даже в случае использовании PGP.
Так что тут больше дело привычки разработчика чтобы шифровать критические данные.
Вот и попробуем использовать PGP в нашем простом примере. Конечно уже существует отличный framework QCA (http://delta.affinix.com/qca/) который сделает все за нас. Нам только разобраться с правильным использованием QCA.
Создадим простое десктопное пролижение которое может зашифровать входной текст. Предполагается что у нас уже установлен GnuPG, сгенерированны ключики, получены ключики получателя, установлен и отконфигурирован gpg-agent, установлен и проверен pinentry-qt/pinentry-gtk(дада, мы на линуксе). Затем нам нужно установить qca и qca-gnupg
emerge --ask qca qca-gnupg
Запустим Qt Creator, выберем Qt Gui application, добавим туда qca:
Первый(верхний) комбобокс получит все ключики которые имеют секретную часть — отправитель, второй(нижний) комбобокс получит все ключики у которых есть публичная часть — получатель. Сами ключики встроим в элементы комбобокса используя QVariant data аргумент вызова addItem()
Осталось написать только слот для «Encrypt» кнопки:
Попробуем запустить и протестировать наше приложение (кстати через gpg-agent оно спросит пароль выбранного секретного ключа, поэтому важно проверить сначала работу pinentry):
Ru: Archive: Шифруемся в Qt (2013)
Так как оказалось, что наши коммуникации довольно легко просматриваются товарищами из АНБ то похоже что нужно шифровать все коммуникации. Я решил проверить насколько сложно подключить шифрование в разработке Qt приложений. Как оказалось что все совсем несложно даже в случае использовании PGP.
Так что тут больше дело привычки разработчика чтобы шифровать критические данные.
Вот и попробуем использовать PGP в нашем простом примере. Конечно уже существует отличный framework QCA (http://delta.affinix.com/qca/) который сделает все за нас. Нам только разобраться с правильным использованием QCA.
Создадим простое десктопное пролижение которое может зашифровать входной текст. Предполагается что у нас уже установлен GnuPG, сгенерированны ключики, получены ключики получателя, установлен и отконфигурирован gpg-agent, установлен и проверен pinentry-qt/pinentry-gtk(дада, мы на линуксе). Затем нам нужно установить qca и qca-gnupg
Запустим Qt Creator, выберем Qt Gui application, добавим туда qca:
Создадим простую форму, соединим кнопку с нашим слотом «encrypt»:
В main.cpp все что нам нужно это инициализация QtCrypt:
Затем в конструкторе окна получим список всех доступных ключиков чтобы инициализировать комбобоксы:
Первый(верхний) комбобокс получит все ключики которые имеют секретную часть — отправитель, второй(нижний) комбобокс получит все ключики у которых есть публичная часть — получатель. Сами ключики встроим в элементы комбобокса используя QVariant data аргумент вызова addItem()
Осталось написать только слот для «Encrypt» кнопки:
Попробуем запустить и протестировать наше приложение (кстати через gpg-agent оно спросит пароль выбранного секретного ключа, поэтому важно проверить сначала работу pinentry):
Довольно просто, не так ли? Шифруемся!
(английский вариант со всеми исходниками приложения: lynxline.com/qt-and-use-of-cryptography-simple)