Ich habe viele Implementierungen von AES, Twofish und Serpent in C gefunden. Aber ich verstehe die Beispiele nicht wirklich. Ich verstehe nur, dass einige mit Beispielen versehen sind, um eine Matrix zu invertieren.
Kann mich jemand auf eine Beispiel- oder .c-Datei verweisen, um Daten zu verschlüsseln / zu entschlüsseln, die durch char*
und ein Passwort dargestellt werden?
Der Wikipedia-Artikel verlinkt tatsächlich auf ein hervorragendes Tutorial (von X-N20 ) geschrieben in C, die Sie durch die Mathematik führt und C-Implementierungen für unterwegs bereitstellt, was sehr nützlich ist, um den Prozess zu verstehen. Ich würde auch empfehlen, auf finiter Feldarithmetik nachzulesen.
Serpent und Twofish , die den AES-Titel verpasst haben, sind im Internet nicht so gut dokumentiert. Denken Sie jedoch daran, dass jede Referenzrealisierung bereitstellt.
Wenn Sie sie selbst implementieren, müssen Sie die entsprechenden Dokumente und wahrscheinlich den Referenzquellcode studieren.
Beachten Sie, dass sich Ihre 20 Milliarden Kommentare alle auf die Tatsache beziehen, dass die Schnittstelle NIST, die für AES angegeben wurde, war, dass jede Chiffre einen 128-Bit- (16 Byte) Eingabeblock und einen von 128 Bit, 192 Bit und 256 Bit bereitstellt Schlüsselblöcke.
Um sicher zu verschlüsseln, um der Kryptoanalyse zu widerstehen, brauchen Sie sorgfältige Arbeit. Was passiert zum Beispiel, wenn in Ihrem letzten Block einige Bytes fehlen? Wie packst du sicher? In ähnlicher Weise, abhängig von der beabsichtigten Verwendung, gibt es andere Schemata, insbesondere für große sich wiederholende Daten, entworfen, um der Kryptoanalyse zu widerstehen, wo Sie wissen, dass die verschlüsselten Daten wahrscheinlich den Inhalt von c:\windows
enthalten. Was die Kommentatoren versuchen zu erreichen, ist, dass für jeden realen Gebrauch, um sicher zu bleiben, diese Dinge berücksichtigt werden müssen.
Bearbeiten Da zu diesem Thema eine andere Frage aufgetaucht ist, hier ein paar Links:
crypto
sehen. gpg
. Genauer gesagt, wenn Sie nach AES suchen, finden Sie es vielleicht nicht hier, aber Sie werden Kamelie und Schlange finden. Wenn ich versuche, die noch unbeantwortete Frage von killercode
zu beantworten, versuche ich, dasselbe zu erreichen:
Laden Sie diesen TwoFish-Code herunter (danke an Schneier et al.): Ссылка
Verwenden Sie diesen Code (auf eigene Gefahr natürlich):
%Vor%Das war mein Versuch und es scheint ziemlich gut zu funktionieren.
Es verwendet den CBC-Modus.
Ich bin offen für Vorschläge, falls jemand welche hat.
Natürlich möchten Sie MAX_BLK_CNT
möglicherweise zu einer Variable machen und sie entsprechend erhöhen, um eine Vielzahl von Datenlängen verschlüsseln zu können. Obwohl ich mir nicht 100% sicher bin, ob das normal ist.
Prost! :)
Laden Sie OpenSSL / Putty / GnuPG-Quellen herunter. Alle von ihnen enthalten die Quelle des entsprechenden Verschlüsselungsalgorithmus. Außerdem hat jeder Algorithmus eine Referenzimplementierung in C, die leicht über das Internet gefunden werden kann.
Tags und Links c encryption aes