Verschlüsselung
-
Ich würde dir empfehlen die Verschlüsselung nicht selbst zu implementieren (außer du machst das aus Interesse und nicht für ein reales Projekt), da man leicht Fehler einbaut etc. Es gibt zahlreiche Bibliotheken für C und C++, zB die libgcrypt (aus dem GnuPG-Projekt) oder Crypto++. Ansonsten existieren für die meisten Verschlüsselungs-Algorithmen Referenz-Implementierungen, die du nutzen könntest.
Wenn du mehr über Kryptographie erfahren willst, wirst du um das Standard-Werk wohl nicht herum kommen
Applied cryptography | ISBN: 0471128457Nachtwind schrieb:
Hm, bei Text, die nicht uebermaessig gross sind, duerfte doch Vernam/One-Time-Pad ganz brauchbar sein, schnell einfach, reversibel aber dennoch sicher...
Hört doch bitte mit One-Time-Pad auf!
-
also von one-time-pad halt ich auch nicht wirklich viel,
asymmetrische verschlüsselung ist im moment eigentlich wirklich das one and only also würd ich von da was nehmen kryptologie is ein sau interessantes thema ich kann dazu von simon singh geheime botschaften empfehlen, ein sehr gutes buch mit lesbaren formulierungen
nur musste zu anwendung dazu dann weiter rein gehn für rsa musste ich viele websites besuchen um rauszufinden wie es tatsächlich funktioniert XD, kann dir da aber auch n paar infos geben wenn des willst,
hab da so ne 120-Seiten-Seminararbeit...
Gruß, Hunger
-
Dann mal her damit, mich interessierts.
-
die ganze arbeit ?

-
Was deiner Meinung nach nützlich ist um RSA zu implementieren.
Ich kann auch Java soweit lesen

-
hi,
wenn es "nur" darum geht ascii Text zu verschlüsseln und das ganze etwas sicherer als xor sein soll, dann könnte die
Random-Verschlüsselung ganz nützlich sein.Hier ein kleines Programm mit eingebautem (Primitiv) Randomgenerator, das die Randomverschlüsselung demonstriert:
unsigned long lehmer(long int s) // Lineare Kongruenzmethode nach Lehmer { static unsigned long a = 1, b = 4194301, c = 2147483647, z = b; if ( s < 0 ) { s = - s; b = s;} z = (a + b * z) % c; return z % s; } void chiffre ( long int seed, long int range, int n, string text, long int secret[]) { lehmer(-seed); if ( range > 0 ) for (int i = 0; i < n; i++) secret[i] = (int)text[i] + lehmer(range); else for (int i = 0; i < n; i++) text[i] = (char)(secret[i] - lehmer(range)); } int main(int argc, char *argv[]) { string text ="Where ignorance is bliss tis' folly to be wise"; long int secret[100]; int n = text.length(); // Parameter der Verschlüsselung setzen. // Seed und range müssen bei Sender und Empfänger identisch gleich sein. long int seed = 314159265; // Startwert für Zufallszahlenfolge long int range = 589793238; // Zufallszahl aus Bereich 0..589793237 cout << "Text: " << text << endl; // Verschlüsselung chiffre ( seed, range, n, text, secret ); cout << "Chiffriert: "; for (int i = 0; i < n; i++) cout << secret[i] << " "; cout << endl; // Entschlüsselung chiffre ( seed, -range, n, text, secret ); cout << "Dechiffriert: " << text << endl; return 0; } /* Text: Where ignorance is bliss tis' folly to be wise Chiffriert: 517769730 147894922 18997234 206732853 183685324 121854227 400230142 159977991 311798117 195928414 188643095 311630247 332237088 193986841 361992925 149589485 449360302 582087321 175106033 309136939 68084118 150041065 537987766 367341035 07007728 241769222 41325606 495252861 505901981 185416513 379386708 336848968 480284029 87910431 155469837 550220938 353622729 42787025 354251736 331149278 387177826 85549929 165687031 117352297 25176161 586173098 Dechiffriert: Where ignorance is bliss tis' folly to be wise */
-
-
DaHunger schrieb:
...
asymmetrische verschlüsselung ist im moment eigentlich wirklich das one and only ...Sorry, aber das kann ich so nicht stehen lassen. "Asymmetrische Kryptographie" ist erstmal keine Qualitätsaussage, sondern eine Kategorie kryptographischer Algorithmen nach einer bestimmten Eigenschaft ! Ich kann Dir auch eine "asymmetrische Verschlüsselung" programmieren, die absolut unsicher ist...
Wenn Du eine aufwendige Schlüsselverteilprblematik zui lösen hast, empfehle ich auch asymmetrische Algorithmen ... andernfalls (vA bei performancekritischen Anwendungen) kann man prima (und pftmals besser) symmetrische verwenden.
Gruß,
Simon2.
-
http://www.cryptopp.com/ - da lesen
-
@simon2{
tut mir echt leid, dass du des nich so stehen lassen kannst.
aber die am besten anzuwendenden verfahren findet man ganz einfach in diesem bereich,
und damit ist dieser bereich der, in dem man suchen muss wenn man was braucht.
damit ist er das one and only.
}
-
DaHunger schrieb:
...aber die am besten anzuwendenden verfahren findet man ganz einfach in diesem bereich,...
"Besser anzuwenden" ist für Dich ein Kriterium für "the one and only" ? Dann müsste Onetimepad ja das Beste vom Besten sein.... (nichts ist einfacher)

Dass Du das so wahrnimmst, kann nur an Deinem eingeschränkten Sichtfeld liegen. Schau Dir mal an, welche Algorithmen bei Chipkartentransaktionen in der überwiegenden Mehrheit angewandt werden: Symmetrische ! Warum ? Weil sie "besser anzuwenden sind" ... und weil man in diesem Umfeld die Vorteile asymmetrischer Kryptographie (Keymanagement) nicht braucht - wohl aber die der symmetrischen (geringer CPU- und Memoryverbrauch). Und für Verschlüsselung (sprich "Geheimhaltung von Daten") sind symmetrische Verfahren viiiel weiter verbreitet als asymmetrische. Bisweilen wird ein "asymmetrisches Verteilverfahren für symm. Sessionkeys" angehängt, aber der Sicherungsmechanismus der Daten ist weiterhin symmetrisch.
Bei der "Authentikation" sind asymmetrische Verfahren dagegen wirklich oft die bessere Wahl (wenn sie denn technisch möglich ist).Hier gilt wie überall in der Programmierung: Das beste Werkzeug ist das bestpassende ! (und hängt damit stark vom Anwendungszweck ab)
Ich will gar nicht RSA&Co schlechtmachen, aber wer sich freiwillig Scheuklappen aufsetzt, kann nicht mit meiner Zustimmung rechnen. (Hierbei verwende ich "Scheuklappen" übrigens in seiner ursprünglichen Bedeutung "Absichtliches Ignorieren von Alternativen" ... nicht in seiner (leider immer wieder auftauchenden) pejorativen Form "Du bist blöd und ich schlau" !)
Andersherum wird IMO ein Schuh draus: Wer "Verschlüsseln" will, sollte sich auch bei asymmetrischen Verfahren umsehen ... aber nicht ausschließlich.
Gruß,
Simon2.
-
das problem bei asymmetrischen verfahren ist ja ganz eindeutig dass sie zu langsam sind. wenn er aber einen text verschlüsselen möchte ihn übers netz übertragen(sicher) und dort wieder entschlüsseln will dann ist das wohl die deutlich bessere variante, bzw in ähnlicher kombination wie das pgp tut: erst den schlüssel für ein symmetrisches verfahren mit zb rsa verschlüsseln den übertragen und mit dem schlüssel den eigentlichen text verschlüsseln und den mitübertragen. wenn er dem schlüsselaustausch problem aus dem weg gehen will geht der weg unweigerlich über asymmetrische verschlüsselung. ansonsten tuts auch die symmetrische. one-time-pad ist absolut nicht am einfachsten anzuwenden für seinen fall, denn er muss den schlüssel ja irgendwie JEDES MAL (one-time eben) für jeden text wieder analog damit sich zum andren pc transportieren.
unterschiedliche sichtweisen=endlose diskussion und am ende macht beides (keinen) sinn also is des thema für mich hiermit beendet.
gruß, Hunger
-
DaHunger schrieb:
...unterschiedliche sichtweisen...
Mal abgesehen davon, dass ich nicht wüsste, wann man überhaupt duskutieren sollte, wenn nicht dann, wenn man unterschiedliche Sichtweisen hat:
Deiner Darstellung stimme ich voll und ganz zu !Ich habe mich lediglich gegen die Vereinfachung gewandt und darauf hinweisen wollen, dass für Verschlüsselung (so gut wie) immer (auch) symmetrische Verfahren verwendet werden.
Deswegen würde ich sagen: Einigkeit=>Diskussion beendet.Gruß,
Simon2.
