![]() |
Delphi Entschlüsselung
Hallo,
habe eine Frage zu Borland Delphi 6 Enterprise Edition. Ist ein Schulprojekt und der Lehrer möchte das wir einen Text aus Memo2 über den Schlüssel GOLDENBR bei der OnClick.Button2 Prozedur in Memo1 einfügen. Die Klartext-Geheimtext-Tabelle habe ich bereits erstellt. Könnte mir vielleicht jemand dabei helfen. Habe absolut keine Ahnung von Delphi. Hab erfahren das Wir eine Monoalphabetische Verschlüsselung benutzen,was auch immer das sein mag. Bitte um schnelle Hilfe Master-of-nichts |
Re: Delphi Entschlüsselung
Hi ,
habe leider nicht viel Zeit dir etwas dazu zu erklären, aber kann dir etwas geben was dir weiter hilft: Zitat:
![]() Und für die Lösung guck dir mal den ![]() Vielleicht hilft dir das für den moment weiter. Wenn ich heute abend was zeit habe, guck ich hier nochmal rein. greetz Lun |
Re: Delphi Entschlüsselung
Zitat:
Zitat:
![]() Edit: Huch - der war schneller ;-) |
Re: Delphi Entschlüsselung
Hey Leute...
komm damit irgendwie nicht weiter...kann mir jemand vielleicht ein Beispiel ins Netz stellen. Danke schonmal im Vorraus. Master-of-nichts |
Re: Delphi Entschlüsselung
@Master-Of-Nichts: Würdest Du eventuell den Tipps und Links folgen? Weiterhin wäre es wirklich sehr freundlich, wenn Du zumindest im Ansatz zu einer Lösung beisteuern würdest. Die von Dir verfolgte Strategie, einfach gar nichts zu machen und uns die ganze Arbeit erledigen zu lassen, fruchtet vielleicht bei Dir zu Hause...
aber hier nicht. |
Re: Delphi Entschlüsselung
Delphi-Quellcode:
Master-of-nichts
unit Unit1;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Grids, StdCtrls; type TForm1 = class(TForm) StringGrid1: TStringGrid; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Memo1: TMemo; Memo2: TMemo; Edit1: TEdit; Button5: TButton; Button6: TButton; procedure FormCreate(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.DFM} var n,k,sch_wort_lang: integer; sch_wort,buchstabe,klartext,geheimtext : string; procedure TForm1.FormCreate(Sender: TObject); begin stringgrid1.Cells[0,0]:='Klartextalphabet'; stringgrid1.cells[1,0]:='Geheimtextalphabet'; stringgrid1.Cells[0,1]:='A'; stringgrid1.Cells[0,2]:='B'; stringgrid1.cells[0,3]:='C'; stringgrid1.Cells[0,4]:='D'; stringgrid1.cells[0,5]:='E'; stringgrid1.Cells[0,6]:='F'; stringgrid1.Cells[0,7]:='G'; stringgrid1.Cells[0,8]:='H'; stringgrid1.Cells[0,9]:='I'; stringgrid1.cells[0,10]:='J'; stringgrid1.Cells[0,11]:='K'; stringgrid1.Cells[0,12]:='L'; stringgrid1.Cells[0,13]:='M'; stringgrid1.Cells[0,14]:='N'; stringgrid1.Cells[0,15]:='O'; stringgrid1.Cells[0,16]:='P'; stringgrid1.Cells[0,17]:='Q'; stringgrid1.Cells[0,18]:='R'; stringgrid1.Cells[0,19]:='S'; stringgrid1.Cells[0,20]:='T'; stringgrid1.Cells[0,21]:='U'; stringgrid1.Cells[0,22]:='V'; stringgrid1.Cells[0,23]:='W'; stringgrid1.Cells[0,24]:='X'; stringgrid1.Cells[0,25]:='Y'; stringgrid1.Cells[0,26]:='Z'; stringgrid1.Cells[1,1]:='G'; stringgrid1.Cells[1,2]:='O'; stringgrid1.cells[1,3]:='L'; stringgrid1.Cells[1,4]:='D'; stringgrid1.cells[1,5]:='E'; stringgrid1.Cells[1,6]:='N'; stringgrid1.Cells[1,7]:='B'; stringgrid1.Cells[1,8]:='R'; stringgrid1.Cells[1,9]:='U'; stringgrid1.cells[1,10]:='F'; stringgrid1.Cells[1,11]:='S'; stringgrid1.Cells[1,12]:='K'; stringgrid1.Cells[1,13]:='A'; stringgrid1.Cells[1,14]:='C'; stringgrid1.Cells[1,15]:='H'; stringgrid1.Cells[1,16]:='I'; stringgrid1.Cells[1,17]:='J'; stringgrid1.Cells[1,18]:='M'; stringgrid1.Cells[1,19]:='P'; stringgrid1.Cells[1,20]:='Q'; stringgrid1.Cells[1,21]:='U'; stringgrid1.Cells[1,22]:='V'; stringgrid1.Cells[1,23]:='W'; stringgrid1.Cells[1,24]:='X'; stringgrid1.Cells[1,25]:='Y'; stringgrid1.Cells[1,26]:='Z'; for n:=1 to 26 do stringgrid1.cells[0,n]:= chr(n+64); end; procedure TForm1.Button3Click(Sender: TObject); //Schlüssel erzeugen begin // end; procedure TForm1.Button4Click(Sender: TObject); //vereinfachen begin sch_wort := edit1.text; sch_wort_lang := length(sch_wort); //Grossbuchstaben for n:=1 to sch_wort_lang do sch_wort[n]:= upcase(sch_wort[n]); n:=0; repeat //Sonderzeichen raus n:=n+1; if not(sch_wort[n] in['A'..'Z']) then begin sch_wort := copy(sch_wort,1,n-1)+ copy(sch_wort,n+1,99); n:=n-1; sch_wort_lang := sch_wort_lang -1; end; until n>sch_wort_lang; n:=0; repeat //Doubletten raus n:=n+1; buchstabe := sch_wort[n]; for k:=n+1 to sch_wort_lang do if sch_wort[k]=buchstabe then sch_wort := copy(sch_wort,1,k-1)+ copy(sch_wort,k+1,99); until n>sch_wort_lang; edit1.text := sch_wort; end; procedure TForm1.Button1Click(Sender: TObject); //verschlüsseln begin // end; procedure TForm1.Button2Click(Sender: TObject); //entschlüsseln begin end; end. end. [edit=Christian Seehase]Delphi-Tags gesetzt. Bitte künftig selber machen. Danke. Mfg, Christian Seehase[/edit] |
Re: Delphi Entschlüsselung
Delphi-Quellcode:
Die Position eines Buchstaben des Klartextes im StringGrid ermittelst Du so:
procedure TForm1.Button4Click(Sender: TObject); //vereinfachen
begin sch_wort := edit1.text; sch_wort_lang := length(sch_wort); //Grossbuchstaben //for n:=1 to sch_wort_lang do // sch_wort[n]:= upcase(sch_wort[n]); sch_wort:=UpperCase(sch_wort); n:=0; repeat //Sonderzeichen raus n:=n+1; if not(sch_wort[n] in['A'..'Z']) then begin sch_wort := copy(sch_wort,1,n-1)+ copy(sch_wort,n+1,99); n:=n-1; sch_wort_lang := sch_wort_lang -1; end; until n > sch_wort_lang; n:=0; repeat //Doubletten raus n:=n+1; buchstabe := sch_wort[n]; for k:=n+1 to sch_wort_lang do if sch_wort[k]=buchstabe then sch_wort := copy(sch_wort,1,k-1)+ copy(sch_wort,k+1,99); until n>sch_wort_lang; edit1.text := sch_wort; end;
Delphi-Quellcode:
Mit der Position kannst Du dann den Klartextbuchstaben mit dem Geheimbuchstaben austauschen.
position:= ord(KlarText[i]) - ord('A') +1
P.S. Dein Code ist schwer zu lesen, Kommentierungen und Erklärungen und Einrückungen würden den Code lesbarer machen, auch für Dich. Falls Ihr auf die gleiche Schule geht, könnt Ihr Euch ja zusammentun. -> ![]() Grüße Klaus |
Re: Delphi Entschlüsselung
Hallo...
danke nochmals für die Hilfe...irgendwie funktioniert es aber nicht...weiß net was ich mit position:= ord(KlarText[i] - ord('A') +1 anstellen soll... der Code ist Goldenberg... vielleicht hat jemand ein Beispiel dafür, wäre echt nett von euch.. Master-of-nichts |
Re: Delphi Entschlüsselung
Den Link hast Du dir nicht angeschaut oder?
GOLDENBERG ist der Schlüssel G ist an der 7. Stelle des Alphabets ( A=0, B=1...) O ist an der 15. Stelle usw. Dein normaler Text heißt z.B. EINBEISPIEL Dann mußt Du das E mit dem Bchstaben vertauschen der 7 Stellen weiter im Alphabet steht hier steht E im Alphabet: ord('E') - ord('A') = 4 das is die Position von G: ord('G') - ord('A') = 6 der neue Buchstabe steht an Position 4 +6 = 10 und ist chr(ord('E')+10)
Delphi-Quellcode:
function Verschluesseln(pPlaintext, pSchluessel: String):String;
var i, j: integer; lBuchstabe: char; zPlainText:String; zSchluessel:String; begin zPlaintext:=lowercase(pPlaintext); zSchluessel:=lowerCase(pSchluessel); result:=''; for i:=1 to length(zPlaintext) do begin j:=ord(zSchluessel[i])- ord('a'); // Anzahl der Verschiebungen ermitteln if ord(zPlainText[i])+j > (ord('a') + 26) then // ist der verschobene Buchstabe > 'z' lBuchstabe:=chr(ord(ZPlainText[i])+j-26) else lBuchstabe:=chr((ord(ZPlainText[i])+j)); result:=result+lBuchstabe; end; end; Grüße Klaus |
Re: Delphi Entschlüsselung
Nun, der obere Beitrag beschreibt die Vignere Verschlüsselung.
Wie ich eben erst gelesen habe, suchst DU etwas für die Caesar Verschlüsselung. Die ist noch simpler. KlartextAlpabet ABCDEFGHIJKLMNOP Schlüsselalphabet GOLDBERG Dann wird wenn im Klartext ein A vorkommt dieses durch ein G ersetzt. Die Position des Buchstaben Alpabet im Klartext- und Schlüsselalphabet ist die gleiche. Also: Position des Buchstaben ermitteln : ord(KlarText[i]) - ord('A'] + 1 Geheimtextbuchstabe: Schlüsselalphabet[ord(KlarText[i]) - ord('A'] + 1] Mit Memo1.text[i] kannst Du auf die einzelnen Zeichen des Memo Zugreifen. Während der Verschlüsselung am besten alles in ein String schreiben und den String dann mit Memo2.lines.add(DeinString) dem Ausgangsmemo hinzufügen. Mit
Delphi-Quellcode:
kannst Du das ganze Memo1 durchlaufen.
for i:=1 to length(Memo1.Text) do
... Und ein wenig solltest Du auch selber machen. Grüße Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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 by Thomas Breitkreuz