![]() |
Verschlüsselungs Problem mit ASCII Zeichen
Liste der Anhänge anzeigen (Anzahl: 2)
Hier mein Quellcode:
Delphi-Quellcode:
Das Problem ist , dass er Sonderzeichen falsch umwandelt.Wie kann ich angeben , dasser nur Buchstaben nehmen soll zum Verschlüsseln????
procedure TForm1.Button1Click(Sender: TObject);
var i,k:integer; begin for k:=0 to Memo1.Lines.Count-1 do begin for i:=1 to length(s) do begin s[i] := Chr( Ord(s[i]) + 3); end; end; Memo1.Lines.Text:=s; end; procedure TForm1.Button2Click(Sender: TObject); var i,k:integer; begin for k:=0 to Memo1.Lines.Count -1 do begin for i:=1 to length(s) do begin s[i] := Chr( Ord(s[i]) - 3); end; end; Memo1.Lines.Text:=s; end; Danke für alle Hilfe |
Re: Verschlüsselungs Problem mit ASCII Zeichen
|
Re: Verschlüsselungs Problem mit ASCII Zeichen
Zitat:
|
Re: Verschlüsselungs Problem mit ASCII Zeichen
@Penelopee:
So wie ich das sehe, versuchst du die Caesar-Verschlüsselung zu proggen und du möchtest die 26 Großbuchstaben verwenden. Diese liegen im ASCII-Code zwischen 65 und (65+26), oder ? Ein einzelnes Zeichen kannst du mit
Delphi-Quellcode:
auf dem Zeichenring um 3 verschieben.
// Zeichen ist vom Typ Char
Zeichen := Char( (Ord(Zeichen)-65 + 3) mod 26 +65); Wichtig ist auch, dass der Benutzer NUR Großbuchstaben eintippt. [unwichtig] Was mir noch auffällt, ist, dass ich noch vor einem Jahr an dem selben Problem in meinem Informatik-Kurs gegrübbbelt hab'. [/unwichtig] |
Re: Verschlüsselungs Problem mit ASCII Zeichen
Zitat:
Delphi-Quellcode:
Procedure KeyPressDingens
if not( Key in ['a'..'z','A'..'Z', #8] ) then Key := #0; |
Re: Verschlüsselungs Problem mit ASCII Zeichen
bin jetzt bei der One Time Pad Verschlüsselung!
Wie erstelle ich einen Key??Der Key soll genau so lang sein wie der Klartext und aus zufälligen zeichen bestehen!Habe einen dynamischen array erstellt , aber wie gehts weiter??? |
Re: Verschlüsselungs Problem mit ASCII Zeichen
Das müsste eigentlich klappen:
Delphi-Quellcode:
//edit:
type TKey = array of char;
procedure GenerateKey(var AKey: TKey); type TAlpha = 'A'..'Z','a'..'z'; // evtl. noch plus '0'..'9' var i: integer; begin // Prozedur bekommt das bereits auf die korrekte Länge initialisierte Array als Parameter // (den Code zum array initialisieren hast du ja schon) // ich mach also mal direkt weiter: for i := Low(Key) to High(Key) do Key[i] := TAlpha(random(51)); // Alphabet hat 26 Buchstaben, mal zwei wegen Groß- und Kleinbuchstaben. // Wenn du die numerischen Chars noch dazunimmst also 61 end; Natürlich nicht vergessen, vorher einmal randomize aufzurufen (z.B. im Application.Initialize). War dir vermutlich auch vorher schon klar, aber ich sag's sicherheitshalber nochmal dazu. :wink: Sonst macht ja die ganze Verschlüsselung nicht viel Sinn. :lol: |
Re: Verschlüsselungs Problem mit ASCII Zeichen
geht das nicht auch mit einem array of string??Das würde mir besser gefallen!!Aber danke schon mal!
|
Re: Verschlüsselungs Problem mit ASCII Zeichen
Es geht auch mit einem array of string, aber chars sind hier eigentlich sinnvoller. Also entweder ein array of char oder ein string (was ja eigentlich das gleiche ist). Bei einem array of string hättest du ja lauter "ein-zeichige" strings--da kann man das Kind auch gleich beim Namen nennen und char schreiben... :wink:
|
Re: Verschlüsselungs Problem mit ASCII Zeichen
Liste der Anhänge anzeigen (Anzahl: 1)
danke für die hilfe , aber es will einfach nicht klappen.Hab im Anhang mal mein Quelltext und ich will jetzt auf OTP umprogrammieren , könnt ihr euch mal mein Projekt bitte runterladen und mir zeigen wo ich den key ersetlle???
Vielen Dank , ich sitz schon seit stunden hier und komm nciht weiter , hab so nen blöden lehrer , der nichts erklärt! |
Re: Verschlüsselungs Problem mit ASCII Zeichen
Nabend, hab gestern eine seite gefunden auf der ein paar beispiele für Verschlüsselungen sind. Die machen das so, das die auf Datei basis arbeiten. Vieleicht hilfts dir ja.
Hier der link: ![]() |
Re: Verschlüsselungs Problem mit ASCII Zeichen
@Penelope:
Zur Erstellung des One-Time-Pad-Keys, wie du ihn beschrieben hast:
Delphi-Quellcode:
function GetOneTimePadKey(Text:String):String;var i:Integer;
begin // Länge festlegen SetLength(Result,Length(Text)); // zufällige Zeichen for i:=1 to Length(Result) do Result[i]:=Char(Min_ASCII_Code+Random(Max_ASCII_Code-Min_ASCII_Code+1)); // Min_ASCII_Code und Max_ASCII_Code können beispielsweise 65 und 90 sein end; |
Re: Verschlüsselungs Problem mit ASCII Zeichen
Zitat:
|
Re: Verschlüsselungs Problem mit ASCII Zeichen
Hallo.
Warum Text übergeben, wenn nur die Länge genügt? Das ist eine unnötige Abhängigkeit von Delphi Implementierungsdetails. Und das Addieren von 1 innerhalb von Random() muss natürlich weg.
Delphi-Quellcode:
Grüße vom marabu
function GetOneTimePadKey(size: cardinal): string;
var i: integer; begin SetLength(Result, size); for i := 1 to Length(Result) do Result[i] := Chr(Min_ASCII_Code + Random(Max_ASCII_Code - Min_ASCII_Code)); end; |
Re: Verschlüsselungs Problem mit ASCII Zeichen
Hier nochmal mein Quelltext:
Delphi-Quellcode:
Also den key hab ich jetzt erstellt bekommen , aber im Moment wird einfach nur immer der Text um 3 Zeichen verschoben , wie kann ich das machen , dass der Text so verschlüsselt wird , dass ich ihn mit dem zufällig erstelltem key entschlüsseln kann????
procedure TForm1.FormActivate(Sender: TObject);
begin s:=Memo1.Lines.Text; end; function GetOneTimePadKey(Text:String):String;var i:Integer; begin SetLength(Result,Length(Text)); for i:=1 to Length(Result) do Result[i]:=Char(Random(255)); end; procedure TForm1.Button1Click(Sender: TObject); var i:integer; begin for i:=1 to length(s) do begin s[i] := Chr( Ord(s[i]) + 3); end; Memo1.Lines.Text:=s; end; Danke schon mal! |
Re: Verschlüsselungs Problem mit ASCII Zeichen
So - setzt aber vorraus, dass s und ZufString die gleiche Länge haben...
Delphi-Quellcode:
for i:=1 to length(s) do
begin s[i] := Chr(Ord(s[i]) XOR Ord(ZufString[i])); end; |
Re: Verschlüsselungs Problem mit ASCII Zeichen
Zitat:
|
Re: Verschlüsselungs Problem mit ASCII Zeichen
Zitat:
Delphi-Quellcode:
// Wichtig: den One-Time-Pad-Key aufbewahren sonst kann man den Text nicht mehr entschlüsseln
// Key ist als String verfügbar // A: Verschiebung um 0 // B: Verschiebung um 1 ... if Length(S)>0 then for i:=1 to Length(S) do begin S[i]:=Chr(65 + ((Ord(S[i]) - 65) + (Ord(Key[S]) - 65)) mod 26 ); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:05 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