Frage

Ich suche nach zwei Funktionen konzeptionell ähnlich wie diese:

// returns the encrypted text
string encrypt( string public_key, string pass_phrase, string text );
// returns the original text
string decrypt( string private_key, string pass_phrase, string encrypted_text );

wo string ein char* sein könnte, ein std::string oder etwas leicht umsetzbaren zu diesen beiden. Und wo public_key und private_key können grundsätzlich alles sein, von Tasten mit einigen Befehlen erzeugt (GPG / ssl Sachen oder was auch immer), um Schlüssel erzeugen mit anderen einfach Funktionen.

Ich habe in ein paar Kryptographie-Bibliotheken sieht (libgcrypt, libgpgme, openssl ...), aber es ist nicht einfach überhaupt nicht sieht solche Funktionen mit diesen Bibliotheken zu implementieren: sie erfordern eine nicht-oberflächlichen Kenntnisse über asymmetrische Verschlüsselung und eine Menge Code.

Wie auch immer diese Aufgabe scheint nicht ungewöhnlich. Wie kann ich die beiden oben genannten Funktionen implementieren?

War es hilfreich?

Lösung

Leider Verschlüsselung immer erfordert eine nicht-oberflächliche Kenntnis der beteiligten Algorithmen. Es ist schwer, richtig zu machen. Die „Handbook of Applied Cryptography“ ist eine relativ lesbare Anleitung zu den verschiedenen Algorithmen zur Verfügung, so ist es wahrscheinlich ein Blick wert.

Sie könnten auch versuchen, cryptlib . Es scheint ein gut geschichteten Design zu haben, die Sie sinnvolle Voreinstellungen für viele Parameter gibt, so dass Sie hoffentlich zu viel über die Details, ohne sich Sorgen zu machen beginnen kann.

Andere Tipps

Wenn jemand für die einfache Verschlüsselung fragt, kann ich nur empfehlen KeyCzar .

Es bietet nicht nur eine saubere Schnittstelle in mehreren Sprachen (dh die gleichen Schlüssel verwenden kann), sondern auch Mechanismen Schlüsselrotationen zu handhaben und dergleichen.

Und natürlich sichere Standardeinstellungen für die Algorithmen implementiert, so dass Sie nicht über die technischen Details kümmern müssen.

Wirklich, desto besser ist einfach und sicher Kombination ich bisher gesehen habe.

Angenommen, Sie nicht etwas plattformunabhängig benötigen, Cryptography Next Generation (CNG) ist eine relativ neue Kryptografie-API unter Windows und ist überraschend intuitiv und einfach zu bedienen. Ich schrieb einen Artikel, die Sie wahrscheinlich in typischen Anwendungen nach Bedarf sind Beispiele für alle wichtigen Verschlüsselungsoperationen enthält. Der Beispielcode für den Artikel enthält auch ein vollständiges Arbeitsbeispiel für diese Operationen der Visual C ++ Compiler.

http://msdn.microsoft.com/en-us/magazine/ cc163389.aspx

Zur Behandlung von öffentlichen und privaten Schlüsseln als Strings Sie einfach Base64 oder eine ähnliche Codierung verwenden können.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top