AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Codieren mit Passwort

Ein Thema von Matze33 · begonnen am 25. Aug 2010 · letzter Beitrag vom 1. Sep 2010
Antwort Antwort
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#1

Codieren mit Passwort

  Alt 25. Aug 2010, 13:12
Hi,
ich hab hier ein Problem. Bin noch Delphi Anfänger und hab Version 6.

Also in der Schule haben wir die Aufgabe bekommen, einen Codierer zu erstellen, der den Text mit einem Passwort verschlüsselt. Das geht auch schon bei mir - fast. Es wird immer nur bis an die Stelle codiert, wo der Buchstabe im Passwort kommt. Also wenn man dann zB einen engliscen Text hat und als Passwort Ä setzt, geht alles.
Mein Lehrer hat mir dann gesagt, ich soll die Verarbeitung in einem Array of Bytes machen. Da hab ich vorher noch nie mit gearbeitet und hab dementsprechend keine Ahnung, wie ich da ran gehe.
Also momentan sieht mein Code so aus:

Delphi-Quellcode:
unit U_Codieren2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, Buttons, ExtCtrls;

type
  TForm1 = class(TForm)
    Memo1: TMemo;
    MainMenu1: TMainMenu;
    Datei1: TMenuItem;
    Neu1: TMenuItem;
    ffnen1: TMenuItem;
    Speicherals1: TMenuItem;
    Schlieen1: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Hilfe1: TMenuItem;
    Info1: TMenuItem;
    Btn_Codieren: TBitBtn;
    E_Passwort: TLabeledEdit;
    procedure Schlieen1Click(Sender: TObject);
    procedure Neu1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ffnen1Click(Sender: TObject);
    procedure Speicherals1Click(Sender: TObject);
    procedure Info1Click(Sender: TObject);
    procedure Btn_CodierenClick(Sender: TObject);
  private
  Arbeit:Array [0..1000] of byte;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Schlieen1Click(Sender: TObject);
begin
 close;
end;

procedure TForm1.Neu1Click(Sender: TObject);
begin
  Memo1.Clear;
  E_Passwort.Clear;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  E_Passwort.Clear;
end;

procedure TForm1.ffnen1Click(Sender: TObject);
begin
  if(OpenDialog1.Execute) then Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.Speicherals1Click(Sender: TObject);
begin
  if SaveDialog1.Execute then Memo1.Lines.SaveToFile(SaveDialog1.FileName);
end;

procedure TForm1.Info1Click(Sender: TObject);
begin
  //
end;

procedure TForm1.Btn_CodierenClick(Sender: TObject);
var
  V_Text, V_Passwort:string;
  i, step,d:Integer;
begin
  d:=0;
  V_Passwort:=E_Passwort.Text;
  V_Text:=Memo1.Text;
  for i:=1 to length(V_Text) do
  begin
    step:=Ord(V_Passwort[d]);
    d:=d+1;
  if d>length(V_Passwort) then d:=1;
  V_Text[i]:=char(step XOR Ord(V_Text[i]));
  Memo1.Text:=V_Text;
  end;
end;

end.
Wäre toll, wenn ihr mir das verbessern könntet und auch etwas erklären (wenn es nicht eh eindeutig ist )

Gruß

Geändert von MrSpock ( 1. Sep 2010 um 11:03 Uhr) Grund: Namen gelöscht.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#2

AW: Codieren mit Passwort

  Alt 25. Aug 2010, 13:32
Hallo und Willkommen in der DP ,

geht Ihr in dieselbe Klasse?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Matze33

Registriert seit: 25. Aug 2010
38 Beiträge
 
Delphi 6 Personal
 
#3

AW: Codieren mit Passwort

  Alt 25. Aug 2010, 13:43
Scheint ganz so xD

In dem Thread sind ja doch schon ziemlich viele Änderungen.
Ich fänds trotzdem toll, wenn das noch mal in einem Code gemacht werden könnte und nicht in sieben verschiedenen, die sich teilweise selbst widersprechen^^

Übrigens tolle Community habt ihr hier, wirklich!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#4

AW: Codieren mit Passwort

  Alt 25. Aug 2010, 13:52
Wie schon beim Anderen gesagt:
Schau mal im Debugger, was wirklich in deinem V_Text drinsteht und nicht was im Memo angezeigt wird.

Bei eurer XOR-Operation können Zeichen entstehen, mit welchen das Memo nunmal nicht korrekt (so wie ihr es wollt) umgehen kann und daran läßt nichts ändern.

Ihr müßtest eure Verschlüsselung so ändern, daß solche Zeichen nicht entstehen können, aber dann ist es auch keine "direkte" XOR-Verschlüsselung mehr.

Zum Testen kannst du ja einfach mal dieses machen;
Memo1.Text := AllesAnzeigen(V_Text); und dazu noch dieses
Delphi-Quellcode:
function AllesAnzeigen(S: String): String;
var
  i: Integer;
begin
  Result := '';
  for i := 1 to Length(S) do
    if S[i] >= ' then Result := Result + S[i]
    else Result := Result + Format('{%d}', [Ord(S[i])]);
end;
Jetzt werden die "bösen" Steuerzeichen in einen Text "{nummer}" umgewandelt.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.656 Beiträge
 
Delphi 12 Athens
 
#5

AW: Codieren mit Passwort

  Alt 25. Aug 2010, 14:21
Man könnte das Problem aber minimieren, indem man einfach zum exklusiv veroderten Wert 32 addiert (beim Verschlüsseln) bzw. vor dem Verodern subtrahiert (beim Entschlüsseln), oder habe ich da einen Denkfehler drin?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#6

AW: Codieren mit Passwort

  Alt 25. Aug 2010, 14:27
Man könnte das Problem aber minimieren, indem man einfach zum exklusiv veroderten Wert 32 addiert (beim Verschlüsseln) bzw. vor dem Verodern subtrahiert (beim Entschlüsseln), oder habe ich da einen Denkfehler drin?
Nja, aber dann gibt es wo anders Problemchen (also wenn der Wert nach dem XOR größer als #223 ist, dann kommt man auch mit +32 wieder auf solche "bösen" Zeichen.

Wenn man z.B. vor der Verschlüsselung nur ASCII-Zeichen zuläßt, dann wäre sowas möglich.
Denn wenn man alles zuläßt, dann gibt es im Eingang 256 mögliche Zeichen und da diese einfachen XOR nur Zeichen in sich selbst kodieren, ergibt das im Ausgang ebenfalls alle 256 möglichen Zeichen und demnach sind auch solche Steuerzeichen möglich ... egal ob/wie man etwas dazurechnet.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (25. Aug 2010 um 14:30 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#7

AW: Codieren mit Passwort

  Alt 25. Aug 2010, 13:40
Ob nun ArrayOfByte oder String ist egal.
In Delphi haben die String ein Feld für die Längenangabe, weswegen diesen bestimmte Steuerzeichen vollkommen egal sind.

Vermutlich das selbe Problem: http://www.delphipraxis.net/154014-delphi-xor.html

Dein Memo kann mit bestimmten Zeichen nicht so umgehn, wie du es möchtest.
Sobald z.B. im Text, durch deine Kodierung, das Zeichen #0 vorkommt, dann bricht das Memo immer an dieser Stelle ab, da die #0 soviel wie "Ende" bedeutet.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Antwort Antwort


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 20:47 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