AES, Serpent oder Twofish in C Beispiel?
Fand ich eine Menge von Implementierungen von AES, Twofish und Serpent in C. Aber ich weiß nicht wirklich verstehen, die Beispiele. Ich verstehe nur, dass einige-soweit vorhanden-mit Beispielen zum invertieren einer matrix.
Kann jemand mir ein Beispiel oder .c Datei zu verschlüsseln/entschlüsseln von Daten, dargestellt durch eine char*
und ein Passwort?
- polarssl.org/trac/browser/trunk/library/aes.c polarssl.org/trac/browser/trunk/include/polarssl/aes.h die
981 int aes_self_test( int verbose )
Funktion enthält die erforderlichen Beispiel-code, mit zu arbeiten. - ich habe gesehen, dies vor, aber es verschlüsselt nur char-array der Länge 16, und im nicht dass die gute mod sich die wichtigsten Funktionen, danke
- Auch dieser hier ist auch gut zu hoozi.com/Articles/AESEncryption.htm versuchen Sie googeln für die anderen beiden, es gibt viele von Ihnen herum, und Ihre
test
Funktionen enthalten in der Regel gute Beispiele. Ich hoffe, ich habe Sie verstanden und Sie half mit Ihrer Frage, wenn nicht, bitte erläutern Sie mehr. - Also, was ist Ihr wichtigstes Ziel? Dass Sie nicht finden können, eine Implementierung geeignet für Ihre Anforderungen? Was sind diese Anforderungen, bitte definieren Sie in Frage.
- Und by the way, vergessen Sie nicht, dass die AES ist eine block-Chiffre.
- alles was ich brauche ist nur (char *) Verschlüsselung, ich will nur noch einige sichere Daten in meine Anwendung Dateien mit dieser Verschlüsselung. so etwas wie AESEncrypt(char *Data, int len, char *Passwort, int KeySize); wenn möglich, thats all
- Sie möchten möglicherweise versuchen, anstatt AES Rijndael, der ehemalige unterstützt die Verschlüsselung von block-Größen in vielfachen von 32 bits, in der Erwägung, dass AES ist begrenzt auf 128-bit (16 Zeichen) pro block.
- ok, was tun, ich nur kann nicht scheinen zu finden, ein gutes Beispiel, und ich bin nicht wirklich ein C-guru, nur wollen diese Sache getan, danke.
- Twofish ist auch ein 128-bit-max. block Größe der Ziffer, und so ist die Schlange. Sie wird zum verschlüsseln Ihrer Daten block für block, und entschlüsseln Sie block für block.
- u kenne keine Beispiele, die ich verwenden kann?
- wenn Sie sind nicht beschränkt auf C, ich schlage vor, auf der Suche in CryptoPP C++ - Bibliothek. Sie müssen herunterladen, kompilieren und verknüpfen Sie die Bibliothek auf Ihre Bewerbung.
- 16 Bytes ist die native Blocklänge bei AES, Twofish und Serpent. Wenn Sie gefunden haben, eine API, die Ihnen dieses dann müssen Sie implementieren eine cipher-Modus herum. Der empfohlene Modus für diejenigen, die block-Chiffren ist die CBC in den meisten Fällen. en.wikipedia.org/wiki/Block_cipher_modes_of_operation
- Die Hoozi Implementierung von AES ist gut. hoozi.com/post/829n1/... hat alles was du suchst in der
main()
Funktion, probieren Sie es aus, es funktioniert. - ich bin, ich habe es in c, da die meisten meiner app ist in c, ich kann nicht port allen, dass alles vorbei ist, und im besser in c
- Wenn die meisten Ihrer app ist in C, dann nehme ich an, Sie wissen genug C-Schnittstelle die Hooze Umsetzung, seine
main()
enthält die richtige Vorgehensweise, die notwendigen loops und alles. - ja, aber wieder, es unterstützt nur den char data[16] zu verschlüsseln, und meine Daten könnte groß sein, nicht loop-throught alle 16 chars, das wird auf jeden Fall die Zeit nehmen und prüfen, ob nicht ausgerichteten Daten zu :/
- "Sie werden empfohlen, nicht zu verwenden, diese Umsetzung direkt in einer Sicherheits-Produkt oder Anwendung. Bitte verwenden Sie diese AES-source-code nur eine Basis für den Start Ihrer Arbeit. Sie können fügen Sie einige feedback-Mechanismen (auch als Cipher Block Chaining-Modi) zur Erhöhung der Sicherheit dieser AES-Implementierung und auch zur Verringerung von Sicherheitsrisiken wie Block Replay. Wenn Sie sich nicht mit jedem Cipher Block Chaining-Modus, ein Gegenspieler kann in der Lage sein, zu erkennen und nutzen von mustern in Ihrer Nachricht." ~ Hoozi. Lesen, was @Lunatic Experimentatlist schrieb.
- die Chiffre ist eine Blockchiffre, die Sie haben zu Durchlaufen, es gibt keinen anderen Weg. Überprüfen Strom-Chiffren, wenn Sie nicht bis zu den CBC-Idee. en.wikipedia.org/wiki/Stream_cipher#Usage
- dude, ich möchte nur, verschlüsseln von strings, das ist nicht essentiell, um zu studieren, block-cipher-oder stromchiffren, ich möchte nur verschlüsseln von Zeichenfolgen in c, Rijndael, Aes, Twofish-CBC, EBC, was, die es tun
- Gehen Sie mit RC4 en.wikipedia.org/wiki/RC4#Implementation stream cipher dann. Wenn Sie wollen etwas einfacher, ohne die Notwendigkeit zu untersuchen, verwenden Sie eine Caesar-Chiffre.
- ich fragte nur für AES oder Twofish oder Rijndael oder Schlange, das ist alles im Fragen
- Wenn Sie sich entscheiden, um mindestens das Lesen und verstehen des source-Codes für AES-Implementierung, polarssl.org/trac/browser/trunk/library/aes.c die PolarSSL-Datei hat tests (und der code für) drei Verschlüsselungen AES (Linien 981 bis zum Ende).
- wenn Sie wirklich wollen, block-Chiffre, die Sie haben zu tun, einige Lesen (wiki+source-code), sehe ich keinen anderen Ausweg. Es dauert weniger als einen Tag, um alles verstehen und umzusetzen.
- ok, danke dir trotzdem
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dem wikipedia-Artikel eigentlich links, die auf eine ausgezeichnete tutorial (von X-N20) in C geschrieben, die Spaziergänge, die Sie durch die Mathematik und liefert C-Implementierungen auf die gehen, die sehr nützlich für das Verständnis der Prozess. Ich würde auch empfehlen, das Lesen auf finite-field Arithmetik.
Schlange und Twofish, übersehen zu haben, auf der die AES-Titel, sind nicht so gut dokumentiert rund um das internet. Denken Sie jedoch daran, dass jedes bietet referenzimplementierungen.
Eigentlich die Umsetzung selbst erfordert Untersuchung der jeweiligen Papiere und wahrscheinlich die Referenz source-code.
Beachten Sie, dass Sie Ihr 20 Milliarden Kommentare beziehen sich alle auf die Tatsache, dass die Schnittstelle NIST spezifizierten AES war, dass jede Chiffre bieten eine 128-bit (16 byte) Eingang block und einen 128-bit, 192-bit und 256-bit-Schlüssel blockiert.
Um sicher zu verschlüsseln, in einer Weise zu widerstehen Kryptoanalyse richtig, müssen Sie einige sorgfältige Arbeit. Was zum Beispiel, wenn Ihre Letzte block fehlen ein paar bytes benötigt? Wie Sie pad sicher? Ähnlich, je nach Verwendungszweck gibt es andere Systeme, besonders bei großen wiederholenden Daten, entwickelt, um die Kryptoanalyse widerstehen wo Sie wissen, dass die verschlüsselten Daten wahrscheinlich enthält sagen der Inhalt
c:\windows
. Was die commentors versuchen, Sie zu bekommen, ist, dass für jede Praxis, um sicher bleiben, diese Dinge müssen Rücksicht.Bearbeiten Da noch eine andere Frage aufgetaucht, zu diesem Thema, hier ein paar links:
crypto
.gpg
. Speziell, wenn Sie nach AES, könnten Sie es nicht hier, aber Sie finden camellia und Schlange.Versuch einer Antwort auf die -noch unbeantwortete - Frage
killercode
, hier ist mein Versuch, um die gleiche Sache:Herunterladen TwoFish-code (Dank geht an Schneier et al.): https://www.schneier.com/code/twofish-reference-c.zip
Diesen code verwenden (auf eigenes Risiko natürlich):
Das war mein Versuch, und es scheint, funktioniert ganz gut.
Ist es mit der CBC-Modus.
Ich bin offen für Vorschläge, wenn jemand.
Natürlich können Sie gerne machen
MAX_BLK_CNT
eine variable und erhöhen Sie es dementsprechend in der Lage sein zu verschlüsseln, die eine Vielzahl von Daten Längen. Ich bin zwar nicht 100% sicher, dass, wenn das ist Ihre normale Verwendung.Jubeln! 🙂
Download OpenSSL/Putty/GnuPG-Quellen. Alle von Ihnen enthält eine Quelle von entsprechenden Verschlüsselungs-Algorithmus. Auch, jeder Algorithmus hat eine Referenz-Implementierung in C, die leicht gefunden werden können über das internet.