![]() |
Delphi-Version: 5
Eigener Verschlüsselungsalgorithmus benutzen
Liste der Anhänge anzeigen (Anzahl: 1)
Meine Zuordnungstabelle :
Code:
Wollte mich mal an ein Encrypt/Decrypttool ran setzen und hab dafür extra mir ne kleine Zuordnungstabelle ausgedacht. Leider hab ich keinen blassen Schimmer wie ich eine Abfrage gestalte um den eingeben normalen Plaintext dann durch meine Zuordnungstabelle durchzujagen und zu verschlüsseln.
a = 5x0q
b = 9x0w c = 5x0e d = 6x0f e = 5x0r f = 5x0t g = 7x0z h = 5x0u i = 6x0i j = 6x0o k = 0x0p l = 9x0a m = 7x0s n = 5x0d o = 5x0f p = 4x0g q = 4x0h r = 9x0j s = 3x0k t = 7x0l u = 5x0y v = 4x0x w = 7x0c x = 6x0v y = 3x0b z = 6x0n 0 = 0x00 1 = 7x0x 2 = 1x0x 3 = 8x0x 4 = 6x0x 5 = 1x0b 6 = 9x0x 7 = 2x0x 8 = 5x0x 9 = 3x0x Freue mich über Ideen & Vorschläge. |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Was für ein Algorithmus? Ich sehe da nur eine Zuordnungstabelle (oder was das auch sein soll).
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Verschlüssel sollte per, ala
Delphi-Quellcode:
kein Problem sein, bei der Umkehr tust Du Dir durch unterschiedlich langen Tokens etwas schwerer.
for i := 1 to Length(Input) do
Result := Result + GetTrans(Input[i]) Allerdings ist der Algorithmus wegen der fehlenden Sicherheit ohnehin zu zum üben geeignet EDIT: wenn Dir DeddyH bisher nie helfen konnte, schätze ich dürfte es auch an Dir liegen. Seine Geduld bringt hier kaum jemand auf ... |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Kein Problem, dann halte ich mich eben zurück.
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Du wirst Dir bei Deiner Zuordnungstabelle schon etwas gedacht haben,
dann kannst Du mir bestimmt erklären warum Du 9 und 1 in den gleichen Wert übersetzt. Und, daß Dein Eingabetext ohne Satzzeichen und Umlaute auskommt, darf man als bekannt voraussetzen? Gruß K-H Ich sehe gerade, daß ich mich verlesen habe, dann ist das erledigt. jetzt ist v und 5 gleich, aber das wird sich auch noch ändern. |
AW: Eigener Verschlüsselungsalgorithmus benutzen
das v entspricht der 5
Zur Vertiefung der Materie sei noch das Stcihwort: monoalpabetische Verschlüsselung/Substitution genannt. Grüße Klaus |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Na dann geh durch den Text durch und ersetze jedes Zeichen durch den entsprechenden Wert aus der Zuordnungstabelle.
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Du fragst nichts ab, du wendest es an:
Beim Encrypt gehst du alle Zeichen der Zeichenkette durch und fügst an eine neue Zeichenkette immer die zu dem Zeichen zugeordnette Werte. Letztendlich erhältst du somit deinen "verschlüsselten" Code. Beim Decrypt gehst schaust du zuerst, ob die Länge des Codes ein vielfaches von 4 ist dh 4, 8, 12, 16, 20, ... DA ja jede Substitutionszeichenkette genau 4 Zeichen lang ist. Falls ja, dann gehst du in 4er Schritten den ganzen Code durch und schaust in der Zuordnungstabelle, wofür der Code steht und fügst es an eine neue Zeichenkette hinten zu.. Hausverstand! Edit: Wie bereits schon angemerkt - monoalphabetische Substitutionsalgorithmen sind imho schnell geknackt. Ich würd da einfach eine Buchstabenhäufigkeits/Zeichenkettenhäufigkeits - Analyse machen und schauen, mit welcher ![]() |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Jedes Zeichen wäre schlecht, da das Abbildungsziel mehr als ein Zeichen ist.
Statt ersetzen Zielstrings an neuen String anhängen. |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Das klang aber nicht so.
Außerdem müsstest dann noch präziser werden. Besser wäre (für mich) diese Formulierung: ~Ich will Methode X durchführen/implementieren, weiß leider nicht, wie ich Punkt 2 realisiere.. Momentan willst du ja, dass man dir alles schön aufm Silbertablett vorserviert (auch wenns nicht der Fall ist, liest sich das so) Edit: Die Tabelle, die du einfach als ein 2 dimensionalles Arrays zuerst iwo initialisiert hast, gehste mit einer einfachen Schleife durch - ich überlasse es dir, dich für eine bestimmte zu entscheiden |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Die Tabelle besteht aus Datensätzen (plainCharacter -> cipherText)
dann bietet sich ein Record an:
Delphi-Quellcode:
Da Du eine bestimmet Anzahl an Zeichen hast, kannst Du diese in einem Array halten.
TDataSet = record
plainChar : ansiChar; cipherText: ansiString[4]; end;
Delphi-Quellcode:
Speichern durch das Array iterieren und jeden Datensatz in eine Datei/TFileStream schreiben.
TZuordnungstabelle = Array[0..35] of TDataSet;
Auslesen geht es dann umgekehrt. Grüße Klaus |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Hallo,
ich fand die Überschrift recht interessant, kann aber gar keine Verschlüsselung erkennen. Es handelt sich doch nur um den Austausch eines Zeichens durch eine genau definierte Zeichenkette. Heißt bei genug Text kann man die Struktur erkennen und relativ schnell die Bedeutung zusammen sortieren. Aber viel leicht ist es ja auch nur eine Übung. Eine Hilfe für die Umsetzung findest Du ![]() |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Danke für die vielen Antworten. Ich werde mir wohl erstmals Records anschauen müssen denn damit hab ich noch gar nichts gemacht.
Ja es ist eine Übung für mich :-) |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
![]() Wenn auch eine sehr schwache.. Grüße Klaus |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Bits jemand von euch hier der mir sagen könnte wie sicher ungefähr meine Tabelle ist?
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Es ist ein simples Substitutionsverfahren wie Caesar, nur dass du nicht rotiertst, sondern "gemischt" ersetzt. Das ändert nur nichts daran, dass man mit einer Häufigkeitsverteilung genau so leicht da dran gehen kann, weil eben ein Zeichen immer durch genau ein/e andere/s (Folge) ersetzt wird. So lange du eine 1<->1 Beziehung hast wird das auch so bleiben, völlig egal was du für Werte nun in deine Tabelle schreibst.
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
Du ersetzt ein Zeichen durch vier Zeichen, dadurch erhöht sich die Sicherheit aber nicht. Deine 4 Zeichen repräsentieren auch nur ein Informations-Token. Deine Verschlüsselung ist auch nur eine monoalphabetische Verschlüsselung. Caesar:
Code:
Grüße
Beispiel für eine Verschiebung um drei Zeichen:
Klar: a b c d e f g h i j k l m n o p q r s t u v w x y z Geheim: D E F G H I J K L M N O P Q R S T U V W X Y Z A B C Deine 0x1z 0x2y 0x3x ... Klaus |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Stell' Dir vor ein Angreifer bekommt den verschlüsselten Text und den Klartext gleichzeitig in die Finger (weil er mit deiner Sekretärin gepimpert hat :-) ).
Blöderweise war die Nachricht auch noch recht lang, so dass alle Buchstaben verwendet wurden. Ausserdem kennt er auch noch Algorithmus. Ein gutes Verschlüsselungsverfahren ist nun so konstruiert, dass der Angreifer daraus den Schlüssel (deine Zuordnungstabelle) nicht zurückrechnen kann. Selbst wenn man den Schlüssel für folgende Nachrichten ändert, weiss der Angreifer bei einer Zuordnungstabelle doch genug (Häufigkeitsverteilung der Buchstaben, Wörterbuchattacke,...) um die Nachricht zu entschlüsseln. |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Andreas (shmia) erklärt es am besten. Das ist vermutlich auch, warum viele die Caesar-Verschlüsselung nicht als Verschlüsselung ansehen. Nach heutigen Maßstäben (Rechenkapazität und Speicher, sowie Internet) ist das ein Klacks.
Wenn die benutzte (natürliche) Sprache bekannt ist, wird es aufgrund der statistischen Buchstabenverteilung noch einfacher einen Angriff zu fahren. Sprich: mit roher Gewalt ("brute force") die Zuordnung zu knacken. Zitat:
Abgesehen davon hat DeddyH recht. Du hast einfach eine Zuordnungstabelle - also Daten - in deine Frage geschrieben und dann eine leicht wirre ("wie ich eine Abfrage gestalte"?) Frage geschrieben für die es bei StackOverflow Downvotes gehagelt hätte. Dann macht sich DeddyH die Mühe und antwortet dir und bekommt dafür sowas an den Kopf gehauen: Zitat:
*fast sprachlos* :? |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
Nimm mal einen Schlüssel von einem Zeichen Länge und schon hast du eine 1:1-Beziehug zwischen Eingangs- und Ausgangszeichen, also ebenfalls quasi eine Tabelle, für die Umrechnung. Und was das Sicher betrifft. Wenn man die Schlüssellänge entsprechend vergrößert, dann wird es irgendwann extrem sicher ... da kann man selbst mit Bruteforce und statistischen Verteilungen rein garnichts mehr anfangen (vorallem wenn es sich um ein OTP handelt). Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Zitat:
Zitat:
|
AW: Eigener Verschlüsselungsalgorithmus benutzen
Ungeachtet der Sicherheit bei diesem Verfahren kann es so umgesetzt werden:
Deine Zuordnungstabelle in eine Stringlist packen (entferne die Leerzeiche vor und nach dem = und dann der Eigenschaft Text zuweisen). Der Rest ist ... sieh selbst
Delphi-Quellcode:
var
KeyList : TStringList; KeyList.Text := 'a = 5x0q' + sLineBreak + 'b = 9x0w' + sLineBreak + ... '9*= 3x0x'; function Crypt( const aStr : string; const Key : TStrings ) : string; var idx : integer; begin Result := ''; for idx := 1 to Length( aStr ) do Result := Result + Key.Values[ aStr[ idx ] ]; end; function Decrypt( const aStr : string; const Key : TStrings ) : string; var idx : integer; part : string; begin Result := ''; for idx := 0 to aStr div 4 - 1 do begin part := copy( aStr, idx * 4 + 1, 4 ); Result := Result + Key.Names[ Key.IndexOfName( part ) ]; end; end; |
AW: Eigener Verschlüsselungsalgorithmus benutzen
Falls du es selbst erstellen willst:
Fange ganz einfach an: - Nimm zwei Edit's statt zwei Memo's. Dann brauchst du nur mit Strings zu arbeiten, statt mit Stringlists. - Schreibe eine Schleife die Zeichen für Zeichen vom Quelltext durchgeht, und schaue, dass das korrekt und sauber läuft. - Als nächstes soll sie dieses Zeichen irgendwie verändern. zB: +3 rechnen (das wäre dann die orginale Cäsar"verschlüsselung". Das andere nennt sich übrigens nicht Cäsar sondern monoalphabetische Substitution). - Und dann erst fängst du an die Zeichen durch bestimmte andere zu ersetzen. Das kannst du mit Records machen. Ich würds aber mit einem Array machen, dessen Index vom Quelltextbuchstaben abhängt. Der liefert aber nur einen Buchstaben. Und wie setz ich jetzt die Buchstaben wieder zusammen? Fragen über Fragen :P - Und wenn du dann deine 4 Chars pro Quelltextbuchstabe haben willst, dann kannst du stattdessen einfach ein Array of String nehmen. - Und wenn du willst kannst du dann mit Memos und Stringlisten arbeiten. Damit arbeitest du dann automatisch mit sowas ähnlichem wie Array of Strings. Du solltest dir vielleicht angewöhnen zur Lösung einer Aufgabe nicht zuerst das GUI zu erstellen, sondern dich hinzusetzen und zu überlegen WIE kann ich das programmieren mit den Befehlen die mir zur Verfügung stehen (Stichwort Algorithmus). Manchmal schreib ich 2 Zettel voll bevor ich das erste mal die Tastatur berühre :stupid: Rufo's Code ist sicher sehr gut, aber eine von tausend Möglichkeiten das zu machen... Wenn du es selbst Schritt für Schritt programmierst lernst du am meisten und entwickelst deinen eigenen Stil. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz