AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi eine Variable bei jedem Durchlauf ändern, aber immer anders?
Thema durchsuchen
Ansicht
Themen-Optionen

eine Variable bei jedem Durchlauf ändern, aber immer anders?

Ein Thema von malo · begonnen am 24. Jan 2005 · letzter Beitrag vom 24. Jan 2005
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#1

eine Variable bei jedem Durchlauf ändern, aber immer anders?

  Alt 24. Jan 2005, 16:00
Und zwar will ich in meinem Verschlüsselungsprogramm die ASCII-Codes verändern und anzeigen (das ist dann meine "Verschlüsselung"). Nun will ich aber keine regelmäßige Veränderung des ASCII-Codes haben, sondern immer eine neue Veränderung.

Und zwar benutze ich für die Verschlüsselung eine For-Schleife, mit der ich jedes Zeichen durchgehe, den ASCII-Code herausfinde und diesen ändere. Das klappt auch wunderbar. Aber, da ich ja eine "unregelmäßige" Veränderung haben will, dacht ich mir, dass ich innerhalb dieser Schleife die Variable, die meinen ASCII-Code ändert, ändere.

Da hatte ich auch ein paar Ideen, zu denen alle Probleme auftraten.

die Durchlaufvariable der For-Schleife abfragen und per Case-Anweisung die Änderungsvariable ändern --> Problem: ich kann ja keine "unendlichen"-Caseanweisungen schreiben, sondern muss irgendwo eine Art Limit haben. Und da ich ja nicht weiß, wie lang die Strings werden, die verschlüsselt werden sollen, kann ich ja nicht ewig weitermachen, case-Abfragen zu schreiben


Innerhalb der For-Schleife eine andere Variable hochzählen und abfragen, irgendwann dann die Variable zurücksetzen und weiter machen --> Problem: Entweder bekomme ich einen ASCII-Code raus, der bis ins 6-Stellige hereingeht, oder die Änderungsvariable wird gar nicht zum ASCII-Code dazuaddiert.



Naja, das sind die einzigen zwei Möglichkeiten, die halbwegs in Frage kämen, aber es funktionieren halt beide nicht richtig. Hat jemand eine Ahnung, wie ich die Probleme löse, bzw. hat jemand eine andere Idee, wie ich die Variable regelmäßig ändern kann?


Danke schonmal!
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:07
Man könnte es so probieren:
Delphi-Quellcode:
var
 mein_text: string;//Original
 neuer_Text: string;//Verschlüsselt

...

neuer_text:=mein_Text; //Verschlüsselter Text initialisieren
for i:= 1 to Length(mein_Text) do begin
 neuer_Text[i]:= Chr(Ord(mei_text[i])+ (i mod 25));
end;
Damit würde die "Änderung" sich nur alle 25 Zeichen wiederholen.

MfG
Binärbaum
//Edit: Quelltext korrigiert
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#3

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:08
Zitat von malo:
die Durchlaufvariable der For-Schleife abfragen und per Case-Anweisung die Änderungsvariable ändern --> Problem: ich kann ja keine "unendlichen"-Caseanweisungen schreiben, sondern muss irgendwo eine Art Limit haben. Und da ich ja nicht weiß, wie lang die Strings werden, die verschlüsselt werden sollen, kann ich ja nicht ewig weitermachen, case-Abfragen zu schreiben
Die Case-Anweisung würde ich so ungefähr gestalten:

Delphi-Quellcode:
case (variable mod 7) of
0: machwas;
1: machwas;
...
6: machwas;
end;
Anstatt der 7 nimmst du halt die Anzahl der Variationen, die du willst. Ich find die Variante der Verschlüsselung aber viel zu einfach zu knacken. Beschäftige dich mal mit Matritzen-Verschlüsselung, da braucht man schon sehr lange Texte um Regelmäßigkeiten zu erkennen.

Zitat von malo:
Innerhalb der For-Schleife eine andere Variable hochzählen und abfragen, irgendwann dann die Variable zurücksetzen und weiter machen --> Problem: Entweder bekomme ich einen ASCII-Code raus, der bis ins 6-Stellige hereingeht, oder die Änderungsvariable wird gar nicht zum ASCII-Code dazuaddiert.
Sollte eigentlich funktionieren, hast sicher nen Fehler im Code, musste mal nen Ausschnitt posten

MfG Niels

[edit]Fehler im Quote-Tag[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#4

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:16
@Binärbaum: Aber da wär mir die Änderung wieder etwas zu regelmäßig. Ich will jedes Mal eine komplett neue Änderung haben. Also z.B. beim ersten mal +5, beim 2. mal +77, beim 3. Mal +88, beim 4. mal +2, beim 5. mal -20 oder sowas... nur halt bei jedem Zeichen!

@Niels:

Meine Case-Anweisung sieht so aus:

Delphi-Quellcode:
      case AenderungsZaehler of
        1: Aenderung := Aenderung + 7;
        2: Aenderung := Aenderung + 4;
        3: Aenderung := Aenderung + 9;
        4: Aenderung := Aenderung + 61;
        5: Aenderung := Aenderung - 70;
        6: Aenderung := Aenderung + 21;
        7: Aenderung := Aenderung + 1;
        8: Aenderung := Aenderung + 11;
        9: Aenderung := Aenderung - 20;
        10: Aenderung := Aenderung + 71;
        11: Aenderung := Aenderung + 22;
        12: Aenderung := Aenderung - 61;
        13: Aenderung := Aenderung - 51;
      end;
      inc(AenderungsZaehler);
Der Code ist innerhalb meiner Verschlüsselungsschleife

Wenn ich da jetzt "a" (ohne "...") verschlüsseln will, kommt das hier raus:
Code:
1243145

//edit: wegen "leicht zu knacken": Ich versuch ja erstmal etwas einfaches zu machen, zum lernen. Das soll jetzt keine perfekte unknackbare verschlüsselung werden, das kann ich eh nicht
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#5

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:24
Dann könnte man es mit Zufallszahlen probieren:

Delphi-Quellcode:
var
 mein_text: string;//Original
 neuer_Text: string;//Verschlüsselt
 keycode: array[0..24] of Byte;//Schlüsselwerte

...

//Zufallszahlen erzeugen
Randomize;
for i:= 0 to 24 do
 keycode[i]:= random(256);

neuer_text:=mein_Text; //Verschlüsselter Text initialisieren
for i:= 1 to Length(mein_Text) do begin
 neuer_Text[i]:= Chr(Ord(mei_text[i])+ keycode[i mod 25]);
end;
Damit würde die "Änderung" sich zwar auch alle 25 Zeichen wiederholen, aber wäre nicht so regelmäßig.
Allerdings müsste man hier die Schlüsselwerte in keycode irgendwo abspeichern, um den Text wieder entschlüsseln zu können.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#6

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:27
Zufallszahlen sind nicht gut, ich will ja später einen beliebigen verschlüsselten Text auch wieder entschlüsseln können
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#7

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:28
Zitat von malo:
Meine Case-Anweisung sieht so aus:

Delphi-Quellcode:
      case AenderungsZaehler of
        1: Aenderung := Aenderung + 7;
        2: Aenderung := Aenderung + 4;
        3: Aenderung := Aenderung + 9;
        4: Aenderung := Aenderung + 61;
        5: Aenderung := Aenderung - 70;
        6: Aenderung := Aenderung + 21;
        7: Aenderung := Aenderung + 1;
        8: Aenderung := Aenderung + 11;
        9: Aenderung := Aenderung - 20;
        10: Aenderung := Aenderung + 71;
        11: Aenderung := Aenderung + 22;
        12: Aenderung := Aenderung - 61;
        13: Aenderung := Aenderung - 51;
      end;
      inc(AenderungsZaehler);
Der Code ist innerhalb meiner Verschlüsselungsschleife

Wenn ich da jetzt "a" (ohne "...") verschlüsseln will, kommt das hier raus:
Code:
1243145
Damit kann ich leider nicht viel anfangen, da ich ja nicht weiß, wie sich die Variable Änderung auf die Veränderung des ASCII-Symbols auswirkt. Aber die Summer der Veränderungen der Variable Aenderung (komischer Satz) sollte 0 und nicht 5 sein, sonst wird Aenderung langsam aber sicher größer, und erreicht bei längeren Texten dann eben auch den 6-stelligen Bereich.

MfG Niels
  Mit Zitat antworten Zitat
Benutzerbild von malo
malo

Registriert seit: 19. Sep 2004
2.115 Beiträge
 
#8

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:32
Ich zähle die Variable "Aenderung" einfach nur zu dem ASCII-Code dazu. Also nix groß mit Rechnerei.

Und dein komischer Satz ist echt komisch, den kapier ich nämlich nicht
  Mit Zitat antworten Zitat
Benutzerbild von Binärbaum
Binärbaum

Registriert seit: 19. Jan 2005
Ort: Elstra
764 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:32
Dann musst du die Zufallszahlen halt seperat speichern und beim Entschlüsseln wieder einlesen. Da das allerdings ein Sicherheitsrisiko darstellt, könnte man auch eine kleine Änderung vornehmen:
Im obigen Quelltext müsste man Randomize durch RandomSeed (oder so ähnlich heißt es) ersetzen und dann immer den selben Wert zuweisen. Damit bräuchte man die Zahlen nicht speichern, weil der Zufallsgenerator somit stets die gleichen Zufallszahlen erzeugt. Natürlich muss man dann den Startwert von RandomSeed geheimhalten.

MfG
Binärbaum
There are exactly 10 kinds of people: those who understand binary, and those who don't.
---
"Software reift beim Kunden. Bei Hardware ist es anders: Hardware fault beim Kunden." - Rainer G. Spallek
  Mit Zitat antworten Zitat
Niels

Registriert seit: 25. Okt 2003
192 Beiträge
 
#10

Re: eine Variable bei jedem Durchlauf ändern, aber immer and

  Alt 24. Jan 2005, 16:35
Zitat von malo:
Und dein komischer Satz ist echt komisch, den kapier ich nämlich nicht
Ok, da is auch n Rechtschreibfehler drin gewesen

Ich hab nur gemeint, dass deine Variable Aenderung immer größer wird. Du addierst zwar dazu und ziehst auch wieder ab, aber was du abziehst ist weniger, als das was du dazu addierst.

MfG Niels
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz