Autor Beitrag
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 14:43 
hallo,

ich bin neu bei delphi, d.h. ich bin erst seit ein paar monaten dabei.
ich möchte einen einfachen text verschlüsseln, aber nicht die Xor-methode verwenden!!!

kann mir jemand helfen, indem er wie sagt wie ich den text mit sonderzeichen, einfach, symmetrisch verschlüsseln und wieder entschlüsseln kann???

danke im voraus
marvin521993
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 03.02.07 15:02 
Hallo,

Verschlüsseln machst du mit wenn du zwei memos hast und eine combobox,wo ausgewählt wird um wie viel man verschlüsseln will, musst du einfach jeden buchstaben nach für nach verschlüsseln und in memo2 ausgeben.

LG
Marvin
marvin521993
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 172



BeitragVerfasst: Sa 03.02.07 15:08 
das sehe dann ungefähr so aus:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
begin
  Memo2.Clear;
For i:=1 to length(Memo1.text) do
  Memo2.Text := Memo2.Text + char(ord(Memo1.text[i])+StrToInt(ComboBox1.Text));


hoffe das ich dir helfen konnte

LG
Marvin

Moderiert von user profile iconmatze: Delphi-Tags hinzugefügt
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 17:32 
@ Marvin

Ich wollte ein Schluesselwort in ein Edit-Feld eingeben, Ein-/ und Ausgabetext sollten in 2 Memofelder. Ein Buttonklick soll die Prozedur starten. Doch ich habe das Problem, dass Schluesselwort, Ein-/ und Ausgabetext die gleich Laenge haben muessen, was nicht der Fall sein soll.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 03.02.07 17:35 
Wenn du Xor wegen der Sicherheit nicht einsetzen willst, dann kann ich dir sagen, dass alles, was symetrisch ist, etwa genauso sicher ist ;)
Hier mal ein Algo, den ich eben Freihand geschrieben und in einem anderen Thread gepostet hab. könnte fehler enthalten.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function encode(text, key: String):String
var i,keypos:integer; 
begin 
  keypos:=1
  for i:=1 to length(text) do 
  begin 
    Result:=Result+char(byte(ord(text[i])+ord(key[keypos]))); 
    inc(keypos); 
    if keypos > length(key) then 
      keypos:=1
  end
end;

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 17:38 
Wenn du mir jetzt noch den Quelltext ungefaehr erklaeren koenntest, waer das echt net!!
!
Danke
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 17:58 
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 18:40 
Kann mir jemand sagen, was ich tun muss, dass dieser Quelltext funktioniert???
D.h. wenn sowohl Eingabetext und Schluesselwort 3 Buchstaben haben funtioniert er, ansonsten nicht!!!

1:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
unit verschluesselung_Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Borland.Vcl.StdCtrls, System.ComponentModel;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Memo2: TMemo;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  i, ii: integer;
  sw: string;
  te: string;
  vt: string;

implementation

{$R *.nfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text=''
   then
      begin
      showmessage('Bitte geben Sie ein Schlüsselwort ein!');
      exit;
      end;
if memo1.Text=''
   then
      begin
      showmessage('Bitte geben Sie den zu verschlüsselnden Text ein!');
      exit;
      end;
sw:=edit1.text;
te:=memo1.Text;
for i:=1 to length(te) do
   te[i]:=char(ord(te[i])+ord(sw[i]));
memo2.text:=te;
end;

end.


Danke
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 03.02.07 18:46 
user profile iconma$ter hat folgendes geschrieben:
Kann mir jemand sagen, was ich tun muss, dass dieser Quelltext funktioniert???
D.h. wenn sowohl Eingabetext und Schluesselwort 3 Buchstaben haben funtioniert er, ansonsten nicht!!!

Schau dir meinen an und dann weist du, was du an deinem ändern musst. Bzw benutz einfach meinen.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
function encode(text, key: String):String;  
var i,keypos:integer;  
begin  
  keypos:=1//keypos ist die position im schlüssel 
  for i:=1 to length(text) do  //i ist die position im Text
  begin  
    Result:=Result+char(byte(ord(text[i])+ord(key[keypos])));  //verschlüsselung
    inc(keypos);  //position im schlüssel erhöhen
    if keypos > length(key) then  //position im schlüssel nicht größer als schlüssel
      keypos:=1;  
  end;  
end;

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Sa 03.02.07 18:49 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text=''
   then
      begin
      showmessage('Bitte geben Sie ein Schlüsselwort ein!');
      exit;
      end;
if memo1.Text=''
   then
      begin
      showmessage('Bitte geben Sie den zu verschlüsselnden Text ein!');
      exit;
      end;
sw:=edit1.text;
te:=memo1.Text;
while sw < te do
  sw := sw + sw;

for i:=1 to length(te) do
   te[i]:=char(ord(te[i])+ord(sw[i]));
memo2.text:=te;
end;

so sollte es gehen (auch wenn der algo geradezu lächerlich unsicher ist^^)

gruss, rob

_________________
erare humanum est
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 03.02.07 18:51 
user profile iconRobinator hat folgendes geschrieben:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
while length(sw) < length(te) do
  sw := sw + sw;

for i:=1 to length(te) do
   te[i]:=char(ord(te[i])+ord(sw[i]));
memo2.text:=te;
end;

so sollte es gehen (auch wenn der algo geradezu lächerlich unsicher ist^^)

gruss, rob

Unsicher nur, wenn das passwort recht klein ist. bei einem 500 Zeichen PW und einem 500 Zeichen text, bei dem das PW auch noch absolut zufällig ist, ist es recht sicher ;)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Robinator
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 275

WinXP
BDS 2006
BeitragVerfasst: Sa 03.02.07 18:55 
Ups, da hat sich wohl nen fehler eingeschliche, sry :)

Du hast natürlich recht, mit nem one time pattern ist selbst so ein algorithmus sicher, in dem fall wäre aber auch XOR (fast) absolut sicher.

(falls das jetzt nicht gaaanz stimmen sollte, nich gleich steinigen, ich bin kein wirklicher Fachmann in sachen Kryptologie)

gruss, rob

_________________
erare humanum est
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 03.02.07 19:58 
user profile iconRobinator hat folgendes geschrieben:
(falls das jetzt nicht gaaanz stimmen sollte, nich gleich steinigen, ich bin kein wirklicher Fachmann in sachen Kryptologie)

Ich auch nicht, unsere Meinungen stimmen aber überein, also haben wir Recht. ;)
Ein One Time Pad ist absolut 100% sicher, solang das Passwort wirklich nur 1 mal benutzt wird und dem Feind nicht in die Hände fällt ^^

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 20:50 
Okay, danke!!!

Nur nebenbei, die obrgie Methode soll kein Passwortverschluessler sein, sonder lediglich einen einfachen Text fuer den ersten Augenblick nicht entzifferbar machen!!!

Ich glaub ich habs verstanden und was waer dann die naechste Stufe fuer einen sicheren Text bzw. was ist sicherer Xor oder die obendrueber???
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 03.02.07 21:10 
alle polyalphabetischen verschlüsselungen sind etwa gleich sicher. Wenn du bei meinem Code + mit xor vertauscht, hast du auch ne xor verschlüsselung. die nächst höhere sicherheit? Hm .. mal abgesehen von zufallsgenerierten, langen Passwörtern gibts da wohl nur noch asymetrische verschlüsselungen. einfach mal googlen. AES is auch ein Stichwort, Advanced Encryption Standart...

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 22:12 
Naechste Frage:

Ich habe die Xor Methode unter www.dsdt.info gefunden und ausprobiert. Unter dem Artikel stand, dass die Methode sehr unsicher ist. Kann mir jemand unkompliziert erklaeren was es mit dem Zuweisungoperator Xor eigentlich auf sich hat???

Danke im voraus!!!
Grenzgaenger
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Sa 03.02.07 23:37 
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 04.02.07 14:16 
@ JayEff

Wenn ich deine Methode nehme, bekomme ich's in ner Prozedur ja noch hin, aber wenn ich ne Funktion benutz klappts net mehr!!!
ma$ter
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 04.02.07 15:24 
D.h. wenn ich die Funktion mit ner Procedure aufrufen will, kommt ein Fehler.

Wer kann mit helfen???

Danke - ih bin Anfaenger
azubi_20
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 593

WinXP SP2, Ubuntu 8.4
D7 Enterp., D2005 Prof., Java (Eclipse 3.4.0)
BeitragVerfasst: So 04.02.07 15:31 
user profile iconma$ter hat folgendes geschrieben:
D.h. wenn ich die Funktion mit ner Procedure aufrufen will, kommt ein Fehler.

was soll das heißen ?

poste mal quelltext und Fehler, dann sehen wir weiter...