рдЪреВрдВрдХрд┐ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рд╕рдВрдЪрд╛рд░ рдПрдирдПрд╕рдП рдХреЗ рд╕рд╛рдерд┐рдпреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЖрд╕рд╛рдиреА рд╕реЗ рджреЗрдЦреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рд╕рднреА рд╕рдВрдЪрд╛рд░реЛрдВ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореИрдВрдиреЗ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдХрд┐ Qt рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди рдХреЛ рд╕рдХреНрд╖рдо рдХрд░рдирд╛ рдХрд┐рддрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдирд┐рдХрд▓рд╛, рдкреАрдЬреАрдкреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рднреА рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред
рддреЛ рдпрд╣рд╛рдБ рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдбреЗрдЯрд╛ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрд╡рд▓рдкрд░ рдХреА рдЖрджрдд рдХреА рдмрд╛рдд рд╣реИред
рддреЛ рдЪрд▓рд┐рдП рдЕрдкрдиреЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ PGP рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВред рдмреЗрд╢рдХ, рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдХреНрдпреВрд╕реАрдП рдврд╛рдВрдЪрд╛ рд╣реИ (
http://delta.affinix.com/qca/ ) рдЬреЛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рд╕рдм рдХреБрдЫ рдХрд░реЗрдЧрд╛ред рд╣рдореЗрдВ рдХреЗрд╡рд▓ QCA рдХреЗ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЖрдЗрдП рдПрдХ рд╕рд░рд▓ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдмрдирд╛рдПрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╣реА
GnuPG рд╕реНрдерд╛рдкрд┐рдд рдХрд░ рдЪреБрдХреЗ рд╣реИрдВ, рдЙрддреНрдкрдиреНрди рдХреБрдВрдЬрд┐рдпрд╛рдБ, рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдХреБрдВрдЬрд┐рдпрд╛рдБ рдкреНрд░рд╛рдкреНрдд рдХреА, рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░
gpg- рдПрдЬреЗрдВрдЯ , рд╕реНрдерд╛рдкрд┐рдд рдФрд░ рдкрд░реАрдХреНрд╖рдг
pinentry-qt / pinentry-gtk (рд╣рд╛рдБ, рд╣рдо рд▓рд┐рдирдХреНрд╕ рдкрд░ рд╣реИрдВ)ред рдлрд┐рд░ рд╣рдореЗрдВ
qca рдФрд░
qca-gnupg рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
emerge --ask qca qca-gnupg
Qt рдирд┐рд░реНрдорд╛рддрд╛ рдмрдирд╛рдПрдБ, Qt Gui рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЪреБрдиреЗрдВ, рд╡рд╣рд╛рдБ qca рдЬреЛрдбрд╝реЗрдВ:
LIBS + = -L / usr / lib / qca2 -lqca
INCLUDEPATH + = / usr / рд╢рд╛рдорд┐рд▓ / qca2 / QtCrypto
рдПрдХ рд╕рд░рд▓ рдлрд╝реЙрд░реНрдо рдмрдирд╛рдПрдВ, рдмрдЯрди рдХреЛ рд╣рдорд╛рд░реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрд▓реЙрдЯ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВ:

Main.cpp рдореЗрдВ, рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдЗрддрдирд╛ рдХрд░рдирд╛ рд╣реИ рдХрд┐ QtCrypt рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░реЗрдВ:
#include <QtCrypto>
#include <QApplication>
# рдЬрд╛рд░реА рдХрд░реЗрдВ "CryptWin.h"
int main (int argc, char * argv []) {
QCA :: рдЗрдирд┐рд╢рд┐рдпрд▓ рдЗрдирд┐рдЯ;
QApplication a (argc, argv);
рдХреНрд░рд┐рдкреНрдЯреЛрд╡рд┐рдВрдбреЛ рдбрдмреНрд▓реНрдпреВ;
w.show ();
рд╡рд╛рдкрд╕реА a.exec ();
}
рдлрд┐рд░ рд╡рд┐рдВрдбреЛ рдбрд┐рдЬрд╝рд╛рдЗрдирд░ рдореЗрдВ рд╣рдореЗрдВ рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рдЙрдкрд▓рдмреНрдз рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓рддреА рд╣реИ:
QCA :: KeyStoreManager :: start ();
QCA :: KeyStoreManager ksm (рдпрд╣);
ksm.waitForBusyFinished ();
QCA :: KeyStore pgpks (QString ("qca-gnupg"), & ksm);
foreach (const QCA :: KeyStoreEntry kse, pgpks.entryList ()) {
QString рдкрд╛рда = kse.name () + "" + kse.id ();
QVariant v; v.setValue (kse);
ui-> cb_to-> addItem (рдкрд╛рда, рд╡реА);
рдЕрдЧрд░ (kse.pgpSecretKey ()ред isNull ())
ui-> cb_my-> addItem (рдкрд╛рда, рд╡реА);
}
рдкрд╣рд▓рд╛ (рдКрдкрд░реА) рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕ рдЙрди рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдореЗрдВ рдПрдХ рдЧреБрдкреНрдд рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ -
рдкреНрд░реЗрд╖рдХ , рджреВрд╕рд░рд╛ (рдирд┐рдЪрд▓рд╛) рдХреЙрдореНрдмреЛ рдмреЙрдХреНрд╕ рдЙрди рд╕рднреА рдХреБрдВрдЬрд┐рдпреЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдЧрд╛ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рднрд╛рдЧ рд╣реИ -
рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ ред рд╣рдо AddItem () рдХреЗ рд▓рд┐рдП QVariant рдбреЗрдЯрд╛ рддрд░реНрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрд╡рдпрдВ рдХреЛ рдХреЙрдореНрдмреЛрдмреЙрдХреНрд╕ рддрддреНрд╡реЛрдВ рдореЗрдВ рдХреБрдВрдЬреА рдПрдореНрдмреЗрдб рдХрд░реЗрдВрдЧреЗред
рдпрд╣
"рдПрдирдХреНрд░рд┐рдкреНрдЯ" рдмрдЯрди рдХреЗ рд▓рд┐рдП рдХреЗрд╡рд▓ рд╕реНрд▓реЙрдЯ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ:
рд╢реВрдиреНрдп рдХреНрд░рд┐рдкреНрдЯрд╡рд┐рдВрдбреЛ :: рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ () {
QVariant v_my = ui-> cb_my-> itemData (ui-> cb_my-> currentIndex ());
QVariant v_to = ui-> cb_to-> itemData (ui-> cb_to-> currentIndex ());
рдЕрдЧрд░ (v_my.isValid ()) {ui-> pte_dst-> setPlainText ("рдЕрдорд╛рдиреНрдп src"); рд╡рд╛рдкрд╕реА; }
рдЕрдЧрд░ (v_to.isValid ()) {ui-> pte_dst-> setPlainText ("рдЕрдорд╛рдиреНрдп dst"); рд╡рд╛рдкрд╕реА; }
QCA :: KeyStoreEntry kse_my = v_my.value <QCA :: KeyStoreEntry> ();
QCA :: KeyStoreEntry kse_to = v_to.value <QCA :: KeyStoreEntry> ();
QCA :: SecureMessageKey рдХреЛ;
ред insetPGPSecretKey (kse_my.pgpSecretKey ());
ред insetPGPPublicKey (kse_to.pgpPublicKey ());
QCA :: OpenPGP pgp;
QCA :: SecureMessage msg (& pgp);
msg.setRecipient (рдХреЛ);
msg.setFormat (QCA :: SecureMessage :: Ascii);
msg.startEncrypt ();
msg.update (ui-> pte_src-> toPlainText ()ред toUtf8 ());
msg.end ();
msg.waitForFinished (2000);
QByteArray crpt = msg.read ();
ui-> pte_dst-> setPlainText (QString :: fromUtf8 (crpt));
}
рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рдЪрд▓рд╛рдиреЗ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ (рд╡реИрд╕реЗ,
gpg- рдПрдЬреЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпрд╣ рдЪрдпрдирд┐рдд рдЧреБрдкреНрдд рдХреБрдВрдЬреА рдХреЗ рдкрд╛рд╕рд╡рд░реНрдб рдХреЗ рд▓рд┐рдП рдкреВрдЫреЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдкрд╣рд▓реЗ
рдкрд┐рдиреЗрдВрдЯреНрд░реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЬрд╛рдВрдЪ рдХрд░рдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ):

рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ, рд╣реИ рдирд╛? рд╣рдо рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рд╣реИрдВ!
(рд╕рднреА рдЖрд╡реЗрджрди рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдВрдЧреНрд░реЗрдЬреА рд╕рдВрд╕реНрдХрд░рдг:
lynxline.com/qt-and-use-of-cryptography-simple )