AES, Serpent oder Twofish in C Beispiel?

8

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?

    
killercode 14.01.2011, 06:24
quelle

3 Antworten

8

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:

  • Brian Gladmans ASM / C-Code für verschiedene Krypto-Algorithmen wie AES, SHA und Serpent.
  • OpenSSLs AES-Code in ihrem CVS. Siehe auch DES . Sie implementieren keine Schlange. Vielleicht möchten Sie auch den Rest ihres Codes unter crypto sehen.
  • Crypto ++ . Wenn Sie C ++ verwenden können und nur ein Endanwender von Crypto sind, dann brauchen Sie diese Bibliothek (tm). Da sind Algorithmen drin, von denen ich noch nie gehört habe. Ihr SVN-Stamm .
  • libgcrypt bietet eine ganze Reihe kryptografischer Funktionen für gpg . Genauer gesagt, wenn Sie nach AES suchen, finden Sie es vielleicht nicht hier, aber Sie werden Kamelie und Schlange finden.
user257111 14.01.2011, 12:52
quelle
1

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! :)

    
NoOne 26.08.2015 19:31
quelle
0

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.

    
Nickolay Olshevsky 14.01.2011 08:44
quelle

Tags und Links