![]() |
Caesar Verschlüsselung Probleme
hallo,
ich versuche gerade einen Text per Caesar-Verschlüsselung wie folgt zu verschlüsseln: function decodeBuchstabe(c: Char): Char; begin case c of 'a' : Result := 'd'; 'b' : Result := 'e'; 'c' : Result := 'f'; ...usw. doch ich möchte noch einen beliebigen Schlüssel hinzufügen, so dass aus a auch e wird, wenn ich den schlüssel 4 eingebe. ich weiß aber nicht, wie ich anfangen soll, darum bitte ich um hilfe. |
Re: Caesar Verschlüsselung Probleme
Herzlich willkommen in der DP. :dp:
Schau dir mal die Funktionen Ord und Chr an. Damit kannst du die Verschlüsselung in ein paar Zeilen machen.Vielleicht wird dir noch Lowcase weiterhelfen; damit kannst du große Buchstaben verkleinern. |
Re: Caesar Verschlüsselung Probleme
hallo, vielen dank für die schnelle antwort
mit chr und ord habe ich noch nicht gearbeitet, weil wenn ich den schlüssel 5 eingebe und beim X bin, kommen beim ASCII nur Zeichen. das problem ist, dass man bei den letzten buchstaben (z.b. x,y,z) den schlüssel ja nicht mehr addieren muss, sondern subtrahieren und das bereitet mir auch probleme. gibt es irgendwo ein FAQ zu chr und ord? |
Re: Caesar Verschlüsselung Probleme
Das FAQ zu ord und chr nennt sich F1 :mrgreen:
Einfach in Delphi den Befehl markieren und F1 drücken. Dann wird der Befehl erklärt. Zitat:
Wenn du ein x mit einem c verschlüsseln willst, denkst du dir ein erweitertes Alphabet (...xyzabc...) und landest bei a. Im Programm könntest du das etwa so machen: besorg dir die Nummer des zu verschlüsselten Buchstaben (x->24 usw) und die des Schlüsselbuchstaben (c->3). Dann addier beide und zieh 26, ab wenn du über 26 kommst. Dann landest du hier bei 24+3=27, 27-26=1 <-> a. Jetzt musst du nur noch aus der 1 ein a machen und da hilft dir chr weiter. |
Re: Caesar Verschlüsselung Probleme
ok gut, die rechnung verstehe ich, aber ich bin in delphi nicht der hellste,
ich weiß ehrlich nicht wie ich das in delphi soll. mit ord() wandle ich den Buchstaben in eine zahl um und mit chr() wieder zurück. kannst du mir bitte einen kleinen ansatz geben, wo ich drauf aufbauen kann? |
Re: Caesar Verschlüsselung Probleme
denk dir mal den algoritmus aus ohne an einer bestimmten sprache zu denken.
ich würd einfach zeichen in ascii umwandeln +n addieren und wieder in buchstaben umwandeln. falls der buchstabe > 'z' einfach -('z'-'a') wegzählen. so in der art |
Re: Caesar Verschlüsselung Probleme
So als Ansatz:
Delphi-Quellcode:
Jetzt kannst du verschlüsseln wie du willst und nachher alle Schritte rückwärts gehen.
var
chr: char; x: integer; begin chr:='d'; // Mal als Bsp. x:= ord(str); // Da steht jetzt was Richtung 80 drin, wenn ich mich recht erinner... x:= x-ord('a')+1; // Jetzt hat man da schön seine 4 drin stehen. |
Re: Caesar Verschlüsselung Probleme
hab nen quellcode gefunden für den festen schlüssel 3:
for i:=0 to richedit1.lines.count-1 do begin for j:=1 to length(richedit1.lines[i]) do if ((ord((richedit1.lines[i])[j])>64) and (ord((richedit1.lines[i])[j])<88)) then s:=s+chr(ord((richedit1.Lines[i])[j])+3) else if ((ord((richedit1.lines[i])[j])>87) and (ord((richedit1.lines[i])[j])<91)) then s:=s+chr(ord((richedit1.Lines[i])[j])-23) else s:=s+(richedit1.lines[i])[j]; richedit2.Lines[i]:=s; s:=''; end; ich glaub ich hab zu wenig mit delphi programmiert, denn schon bei dem code sehe ich nicht mehr durch. warum schreibe ich bei ord: "ord((richedit1.lines[i])[j])"? danke für die all die hilfe, aber ich glaub, dass ich das nie hinkriegen werde :( |
Re: Caesar Verschlüsselung Probleme
danke toxman für den ansatz, vielleicht schaffe ich es doch noch. sieht aber eher schlecht aus...
|
Re: Caesar Verschlüsselung Probleme
Setz bitte erstmal [delphi ]-Tags um den Code, damit er mit Syntaxhighlighting dargestellt wird. So kann man den kaum lesen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:48 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