Einführung
Dieser Artikel bietet eine Möglichkeit, die Nachrichtenverschlüsselung zu organisieren und RSA-Algorithmen (öffentliche und private Schlüssel) ohne Bibliotheken wie OpenSSL, QCA oder LibSodium zu verwenden.
Wie es funktioniert?
Warum wird das benötigt?
Es gibt viele Verschlüsselungsalgorithmen, von denen die meisten auf der Idee basieren, dass die Nachricht, die Sie erhalten, einen Schlüssel hat, um Ihre Nachricht zu verschlüsseln und an den Empfänger zu senden. Es wird davon ausgegangen, dass der Empfänger den Verschlüsselungsschlüssel bereits erhalten hat, sodass der Empfänger ihn entschlüsseln kann. Diese Methode sollte jedoch niemals verwendet werden, da der Verschlüsselungsschlüssel irgendwie gesendet werden muss, damit ihn niemand abfangen kann, was fast unmöglich ist.
Aus diesem Grund ist das RSA-Verschlüsselungsverfahren mit öffentlichem und privatem Schlüssel (asynchrone Verschlüsselung) mittlerweile das zuverlässigste und beliebteste.
Das Funktionsprinzip ist wie folgt:
Als Beispiel verwenden wir die bereits etablierten Namen von Verschlüsselungsteilnehmern: Alice und Bob.
Angenommen, Alice möchte Bob eine geheime Nachricht senden, möchte aber nicht, dass jemand anderes sie sieht.
Bob erstellt zwei Schlüssel für diese Operation: öffentlich und privat.
Bob sendet den öffentlichen Schlüssel an Alice.
Alice verschlüsselt die Nachricht mit Bobs öffentlichem Schlüssel.
Alice sendet eine verschlüsselte Nachricht an Bob.
Bob entschlüsselt Alices Nachricht mit dem privaten Schlüssel.
Eve, die wissen will, wie Alice und Bob korrespondieren, fängt alle ihre Nachrichten ab. Sie kann damit nichts anfangen, weil sie ihre privaten Schlüssel nicht hat, da im RSA-Algorithmus eine verschlüsselte Nachricht mit Schlüssel A (öffentlicher Schlüssel) nur durch ihr A1-Paar (privater Schlüssel) entschlüsselt werden kann.
So können Sie wichtige Informationen einfach und bequem schützen.
Beschreibung.
Qt-Secret ist eine einfache Bibliothek, die von der QuasarApp-Gruppe auf Qt/qmake erstellt wurde, der Zweck ist um grundlegende Verschlüsselungsfunktionen bereitzustellen, die in nativem Qt nicht zu finden sind. Nämlich: RSA- und AES-Algorithmen.
Hauptmerkmal:
- Generierung von RSA64- und RSA128-Schlüsselpaaren (Unterstützung von bis zu RSA2048-Nummern erwartet)
- RSA-Verschlüsselung und -Entschlüsselung.
- Signatur- und Nachrichtenauthentifizierung.
- AES-Schlüsselgenerierung (AES64, AES128, AES256)
- AES-Verschlüsselung und -Entschlüsselung
Arbeiten mit Qt-Secret
Erstellen Sie die Bibliothek und fügen Sie sie mit qmake zum Projekt hinzu
-
Öffnen Sie Ihr Repository
cd yourRepo
*Fügen Sie Qt-Secret wie ein Submodul zu Ihrem Repository hinzuThe git add submodule https://github.com/QuasarApp/Qt-Secret.git
Aktualisieren Sie Ihre Submodule
git submodule update --init --recursive
Fügen Sie Ihre Qt-Secret „pri“-Bibliotheksdatei zu Ihrer „pro“-Datei hinzu.
include ($$PWD/Qt-Secret/src/Qt-Secret.pri)
- Erstellen Sie das Projekt neu
Die Bibliothek wurde Ihrem Projekt hinzugefügt, jetzt können Sie sie verwenden.
Anwendungsbeispiel
Nachrichten verschlüsseln und entschlüsseln.
#include <qrsaencryption.h> // Include the Qt-Secret library (RSA) QByteArray pub, priv; // Create variables to keys. QRSAEncryption e; // Create a variable to cryptographer // Generate a pair of keys with a bit depth of 128 e.generatePairKey (pub, priv, QRSAEncryption :: Rsa :: RSA_128); // or QRSAEncryption :: Rsa :: RSA_64 QByteArray msg = "test message"; auto encodeData = e.encode (msg, pub); // encrypt the message with the public key auto decodeData = e.decode (encodeData, priv); // decrypt with the private key qDebug () << decodeData; // check in the message.
Signieren und Überprüfen der Nachrichtensignatur.
#include <qrsaencryption.h> // Initialization QByteArray pub, priv; QRSAEncryption e; e.generatePairKey (pub, priv, QRSAEncryption :: Rsa :: RSA_128); // or QRSAEncryption :: Rsa :: RSA_64 QByteArray msg = "test message"; auto signatureMessage = e.signMessage (msg, priv); // sign the message if (e.checkSignMessage (signatureMessage, pub)) {// check the signature // message signed successfully }
Fazit
Diese Bibliothek ist eine gute Lösung für einfache Verschlüsselungsaufgaben.
- einfach einzuschalten;
- Einfach zu verwenden.
Es ist gut, ein Schlüsselpaar für eine Sitzung zu verwenden.
Доброго времени суток, не подскажите, что делать в данной ситуации, после того, как я сделал все вышеуказанные инструкции для подключения библиотеки к проекту?
Выглядит как ошибка библиотеки. Расскажите подробно на какой платформе вы собираете проект (MinGW или MSVC) их версии и версии Qt.
Та же самая ошибка. MinGW, Qt 5.14.2
Для тех у кого возникает ошибка cannot find -lQt-Secret1, cannot find -lQtBigInt6
Решение и описание проблеммы здесь
Библиотека подключилась нормально, только на выводе из первого примера выходит пустое сообщение, вместо "test message" просто "". Никаких ошибок не выдает.
Возможно ли с помощью этой библиотеки шифровать файлы, а не обычные строки?