SHA (1/2/3) Implementierung?



  • Das einzige was ich finde ist so eine eklige Scheisse - das kann man in Worten nicht ausdrücken... überall C - kein C++-Filestreams, STL-Container, überhaupt Standardbibliothek - schnix! Alles C, nur in eine Klasse gepackt! 😡 😮



  • Sone schrieb:

    Das einzige was ich finde ist so eine eklige Scheisse - das kann man in Worten nicht ausdrücken... überall C - kein C++-Filestreams, STL-Container, überhaupt Standardbibliothek - schnix! Alles C, nur in eine Klasse gepackt! 😡 😮

    Also was ich suche ist eine saubere, schöne Implementierung. Irgendein Link. Bitte.



  • Wie man Fragen richtig stellt, hatte heute morgen noch wer gepostet, ich denke, ich kann für alle hier sprechen...



  • SHA-3 gibt's noch nicht.

    Und iostreams haben da meiner Meinung nach auch nichts zu suchen. Wozu brauchst du da C++ Features? Ein struct mit dem "Zustand" und ein paar Funktionen, die den Zustand anhand von Datenbytes ändern. Fertig. Da muss man jetzt keine Klasse für bauen, irgendwo was ableiten oder Templates einsetzen.



  • Boost hat SHA-1.

    // Note: this implementation does not handle message longer than
    //       2^32 bytes.
    


  • Ich werde in den nächsten Wochen (Monaten?) wohl Implementierungen der SHA-2 Familie, AES, RSA, bcrypt, scrypt und was sich halt noch so findet veröffentlichen. Eigentlich wollte ich warten bis ich ein ordentliches Grüppchen zusammen habe, aber wenn da wirklich jemand drauf wartet, kann ich den SHA-2 Kram vielleicht innerhalb von 1-2 Wochen aufräumen. Vielleicht genügt das ja deinen Ansprüchen. (Ist natürlich alles ohne Garantie und nicht 100,000,000 mal getestet. Aber dir scheint es ja mehr um die Implementierung zu gehen.)

    krümelkacker schrieb:

    Da muss man jetzt keine Klasse für bauen, irgendwo was ableiten oder Templates einsetzen.

    Bei iostreams stimme ich dir zu, hat da nichts verloren. Wäre auch Quatsch. Aber Templates und Klassen kann man durchaus sinnvoll verwenden. 😉



  • 🙂 ja sicher, und für eine Zufällige Zahl benutzt Du rand() oder was?!



  • sha1+1#3 schrieb:

    🙂 ja sicher, und für eine Zufällige Zahl benutzt Du rand() oder was?!

    Ney. Für Zufallszahlen benutzt man in C++11 random_device , oder eine Distribution + eine Engine (meistens mt19937 ), ...

    Da mich kk jetzt missverstanden hat (so meinte ich das nicht!!): Die Implementierung nutzte durchgehend C-Arrays, FILE -Pointer, usw. Einfach zum kotzen.



  • Cyres schrieb:

    Wie man Fragen richtig stellt, hatte heute morgen noch wer gepostet, ich denke, ich kann für alle hier sprechen...

    Nope.
    Meine Frage war klar und einleuchtend. Ich möchte eine SHA Implementierung, für 1 oder 2. Wo ist noch das Problem?

    Sonst: Danke ! schon mal. Ich wollte eigentlich ein wenig "rumspielen", allerdings vielleicht auch mal was für Projekte verschlüsseln. Also, einfach um es erstmal zu haben.

    Ach, und danke an Tyrroxx. Das es Boost.UUID gibt, wusste ich nicht.



  • Sone schrieb:

    Cyres schrieb:

    Wie man Fragen richtig stellt, hatte heute morgen noch wer gepostet, ich denke, ich kann für alle hier sprechen...

    Nope.
    Meine Frage war klar und einleuchtend. Ich möchte eine SHA Implementierung, für 1 oder 2. Wo ist noch das Problem?

    Sonst: Danke ! schon mal. Ich wollte eigentlich ein wenig "rumspielen", allerdings vielleicht auch mal was für Projekte verschlüsseln. Also, einfach um es erstmal zu haben.

    Ach, und danke an Tyrroxx. Das es Boost.UUID gibt, wusste ich nicht.

    Mit SHA kann man nichts verschlüsseln... irgendwie solltest Du dass mit der implementierung noch lassen, und noch ein bisschen basics lernen... nichts für ungut.. 🙄



  • -lowbyte- schrieb:

    Sone schrieb:

    Cyres schrieb:

    Wie man Fragen richtig stellt, hatte heute morgen noch wer gepostet, ich denke, ich kann für alle hier sprechen...

    Nope.
    Meine Frage war klar und einleuchtend. Ich möchte eine SHA Implementierung, für 1 oder 2. Wo ist noch das Problem?

    Sonst: Danke ! schon mal. Ich wollte eigentlich ein wenig "rumspielen", allerdings vielleicht auch mal was für Projekte verschlüsseln. Also, einfach um es erstmal zu haben.

    Ach, und danke an Tyrroxx. Das es Boost.UUID gibt, wusste ich nicht.

    Mit SHA kann man nichts verschlüsseln...

    Hashes und Verschlüsselung sehe ich nah beieinander. Wenn ich bspw. einen IP-Hash brauche, dann brauche ich gleichzeitig auch eine Verschlüsselung.



  • Sone schrieb:

    Hashes und Verschlüsselung sehe ich nah beieinander. Wenn ich bspw. einen IP-Hash brauche, dann brauche ich gleichzeitig auch eine Verschlüsselung.

    Nein, nein. Siehe zum Beispiel dieses Forum für ein Gegenbeispiel.

    http://www.c-plusplus.net/forum/215674-full



  • Aber hatten wir doch letztens. Crypto++ ist vielfach erprobt, general public (außer irgendein Algo hat ein Patent, das gilt dann aber bei jeder Bib und auch Eigenimplementierung) und imo auch vernünftig aufgebaut. Das kann Dir auch Verschlüsselungsverfahren liefern. Nimm doch das!



  • Eisflamme schrieb:

    Crypto++ ist vielfach erprobt, general public (außer irgendein Algo hat ein Patent, das gilt dann aber bei jeder Bib und auch Eigenimplementierung) und imo auch vernünftig aufgebaut. Das kann Dir auch Verschlüsselungsverfahren liefern. Nimm doch das!

    Jo, sieht noch besser aus als Boost.



  • Boost kann halt nicht verschlüsseln, ich hatte auch erst geschaut, was das kann. Und ein Hash alleine ist ja langweilig.



  • Sone schrieb:

    -lowbyte- schrieb:

    Sone schrieb:

    Cyres schrieb:

    Wie man Fragen richtig stellt, hatte heute morgen noch wer gepostet, ich denke, ich kann für alle hier sprechen...

    Nope.
    Meine Frage war klar und einleuchtend. Ich möchte eine SHA Implementierung, für 1 oder 2. Wo ist noch das Problem?

    Sonst: Danke ! schon mal. Ich wollte eigentlich ein wenig "rumspielen", allerdings vielleicht auch mal was für Projekte verschlüsseln. Also, einfach um es erstmal zu haben.

    Ach, und danke an Tyrroxx. Das es Boost.UUID gibt, wusste ich nicht.

    Mit SHA kann man nichts verschlüsseln...

    Hashes und Verschlüsselung sehe ich nah beieinander. Wenn ich bspw. einen IP-Hash brauche, dann brauche ich gleichzeitig auch eine Verschlüsselung.

    Was zum Henker hat ein Hash-Algo mit einem symmetrischen oder asymmetrischen Verschlüsselungs Algorithmus zu tun? Nichts! Ein Hash Algo ist eine Mathematische Einwegfunktion, also nicht umkehrbar.


Anmelden zum Antworten