Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Verschlüsselung (https://www.delphipraxis.net/164069-verschluesselung.html)

m500 27. Okt 2011 14:40


Verschlüsselung
 
Hallo Leute!

yörsch 27. Okt 2011 15:07

AW: RSA-Verschlüsselung
 
Erstmal Willkommen in der DP!

sagmal genau wo der Schuh drückt...

m500 27. Okt 2011 15:11

AW: RSA-Verschlüsselung
 
"crypt" und "encrypt"

DeddyH 27. Okt 2011 15:20

AW: RSA-Verschlüsselung
 
Du musst die Methoden schon mit ihrem richtigen Namen aufrufen, die heißen ja nicht Crypt und Decrypt.

P.S.: Wenn ich das schon wieder sehe
Zitat:

Delphi-Quellcode:
constructor init(pCode: integer);
destructor gibFrei;

wird mir ganz anders :wall:

yörsch 27. Okt 2011 15:23

AW: RSA-Verschlüsselung
 
Code:
type
  RSAWerkzeug = class
  zEingabecode, zVerschluesseltercode: Integer;

private
  function hoch_mod(x,y,z: integer): Integer;
public
  constructor init(pCode: integer);
  destructor gibFrei;
  function verschluesselCode: Integer;
  function entschluesselCode: Integer;
end;
Die sichbarkeit ist das problem

function verschluesselCode: Integer;
function entschluesselCode: Integer;

sollten Public sein, dann können die Funktionen auch auserhalb der UNIT verwendet werden.
ähnliches gilt für

constructor init(pCode: integer);
destructor gibFrei;

es ist keine Klasse die von TFrom abgeleitet ist ...
Die defaults sind auch je Delphi unterschiedlich.
im zweifel immer private, protected, public, published verwenden

Gruß
Jörg

m500 27. Okt 2011 15:24

AW: RSA-Verschlüsselung
 
Ja?

yörsch 27. Okt 2011 15:27

AW: RSA-Verschlüsselung
 
normal ist halt
constructor create(pCode: integer);
und
destructor destroy;

DeddyH 27. Okt 2011 15:28

AW: RSA-Verschlüsselung
 
Und der Destruktor sollte überschrieben werden. Allerdings lässt die ganze Namensgebung auf diese unmögliche Schul-Syntax schließen (ich sage nur: mSum), das kann man dem TE nicht vorwerfen.

m500 27. Okt 2011 15:31

AW: RSA-Verschlüsselung
 
Klar

DeddyH 27. Okt 2011 15:37

AW: RSA-Verschlüsselung
 
Delphi-Quellcode:
type
  TDings = class
  private
    (* hier alles rein, was die Klasse nur intern benötigt *)
  protected
    (* hier alles, worauf nur abgeleitete Klassen Zugriff haben sollen,
       wenn kein Bedarf, einfach weglassen *)
  public
    (* hier kommt alles rein, was von außen erreichbar sein soll *)
    constructor Create(<ggf. Parameter>); //der Konstruktor von TObject heißt Create
    destructor Destroy; override;     //der Destruktor heißt Destroy und sollte überschrieben werden
  published
    (* nur für Komponenten relevant, was hierin steht, ist im Objektinspektor zu sehen *)
  end;

yörsch 27. Okt 2011 15:47

AW: RSA-Verschlüsselung
 
Hich ab auch mal ein bischen weiter gemacht...
Den Rest musst DU machen... Ich hab keine Ahnung von RSA...
Ich hoffe die Datenflüsse sind für dich klar...

Code:
unit fmRSA;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, mRSA;

type
  TForm1 = class(TForm)
    MemoCodiert: TMemo;
    MemoVerschluesselt: TMemo;
    MemoEntschluesselt: TMemo;
    BeendenButton: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    ButtonEntschluesseln: TButton;
    ButtonVerschluesseln: TButton;
    procedure FormCreate(Sender: TObject);
    procedure BeendenButtonClick(Sender: TObject);
    procedure ButtonVerschluesselnClick(Sender: TObject);
    procedure ButtonEntschluesselnClick(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    RSA : TRSAWerkzeug;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  RSA.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  RSA := TRSAWerkzeug.create(-1);
end;

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

procedure TForm1.ButtonVerschluesselnClick(Sender: TObject);
begin
  MemoVerschluesselt.Text := RSA.verschluesselCode(MemoCodiert.Text);
end;


procedure TForm1.ButtonEntschluesselnClick(Sender: TObject);
begin
  MemoEntschluesselt.Text := RSA.verschluesselCode(MemoVerschluesselt.Text);
end;

end.
UND

Code:
unit mRSA;

interface

uses Math;

const p = 11;
const q = 13;
const e = 23;
const d = 47;

type



TRSAWerkzeug = class
private
  zEingabecode: Integer;
  zVerschluesseltercode: Integer;
  function hoch_mod(x,y,z: integer): Integer;
public
  constructor create(pCode: integer); overload;
  destructor destroy;
  function verschluesselCode(Const KlarText:String): String;
  function entschluesselCode(Const Text:String): String;
end;


implementation

constructor TRSAWerkzeug.create(pCode: integer);
begin
  zEingabeCode := pCode;
  zVerschluesselterCode := 0
end;

destructor TRSAWerkzeug.destroy;
begin
//
end;

function TRSAWerkzeug.hoch_mod(x,y,z: integer): Integer;
var c : integer;
begin
 C := 1;
 while not (y = 0) do
 begin
   if (y mod 2 = 0) then begin
     x := (x * x) mod z;
     y := y div 2
    end
    else begin
      y := y - 1;
      c := (c*x) mod z
    end
   end;
     result := c
end;

// Liefert den Verschlüsselten TEXT
function TRSAWerkzeug.verschluesselCode(Const KlarText:String): String;
begin
  result := KlarText + ' nix gemacht';
  // Hier muss wass gemacht werden

end;

// Liefert den KlarText
function TRSAWerkzeug.entschluesselCode(Const Text:String): String;
begin
  result := Text + ' nix gemacht';
  // Hier muss wass gemacht werden
end;

DeddyH 27. Okt 2011 15:53

AW: RSA-Verschlüsselung
 
Zitat:

[DCC Warnung] mRSA.pas(23): W1010 Methode 'Destroy' verbirgt virtuelle Methode vom Basistyp 'TObject'
Wenn ich es ja nicht schon 2 mal gesagt hätte :roll:

m500 27. Okt 2011 17:22

AW: RSA-Verschlüsselung
 
Alles klar!

DeddyH 27. Okt 2011 17:29

AW: RSA-Verschlüsselung
 
Bist Du wirklich sicher, dass Ihr ernsthaft mit RSA ver-/entschlüsseln sollt? Ich will Dir ja nicht zu nahe treten, aber Deinen Posts nach zu urteilen ist Verschlüsselung endeutig ein paar Stufen zu hoch. Das lässt nur 2 Schlüsse zu: entweder soll RSA einfach nur simuliert werden, oder Du warst krank oder hast aus anderen Gründen schon lange den Anschluss verpasst.

m500 27. Okt 2011 17:43

AW: RSA-Verschlüsselung
 
Ja stimmt!

m500 27. Okt 2011 17:46

AW: RSA-Verschlüsselung
 
Hmm

DeddyH 27. Okt 2011 17:49

AW: RSA-Verschlüsselung
 
Verschlüsselungs-Algorithmen sind m.W.n. nicht im Lieferumfang von Delphi enthalten, Du wirst Dich also nach externen Quellen umschauen müssen. Wobei mir das immer noch sehr spanisch vorkommt, so eine Aufgabe zu erteilen :gruebel:

m500 27. Okt 2011 17:55

AW: RSA-Verschlüsselung
 
Version 1.0 ;)

implementation 27. Okt 2011 18:06

AW: RSA-Verschlüsselung
 
Weißt du denn, wie das RSA-Verfahren funktioniert?
Also mit Private/Public-Key und wie die Keys generiert werden auf Primzahlbasis?

DeddyH 27. Okt 2011 18:06

AW: RSA-Verschlüsselung
 
Das ist ja gut und schön, aber dafür wird er wohl eine entsprechende Unit verwendet haben. Von allein wird da ja nix verschlüsselt.

m500 27. Okt 2011 18:11

AW: RSA-Verschlüsselung
 
Zitat:

Zitat von DeddyH (Beitrag 1133010)
Das ist ja gut und schön, aber dafür wird er wohl eine entsprechende Unit verwendet haben. Von allein wird da ja nix verschlüsselt.

Schau mal unter mRSA

DeddyH 27. Okt 2011 18:16

AW: RSA-Verschlüsselung
 
Außer "hoch_mod" sehe ich da nichts weiter. Ich kann mir nicht vorstellen, dass das schon alles sein soll (ich habe auch keinen Plan von RSA, aber AFAIK arbeitet der mit Schlüsselpaaren, das muss also definitiv entschieden mehr Code sein).

m500 27. Okt 2011 18:23

AW: RSA-Verschlüsselung
 
Zitat:

Zitat von implementation (Beitrag 1133009)
Weißt du denn, wie das RSA-Verfahren funktioniert?
Also mit Private/Public-Key und wie die Keys generiert werden auf Primzahlbasis?

Klar ;)

m500 27. Okt 2011 18:40

AW: RSA-Verschlüsselung
 
if (y mod 2 = 0) then begin
x := (x * x) mod z;
y := y div 2
end
else begin
y := y - 1;
c := (c*x) mod z
end
end;
result := c
end;

BUG 27. Okt 2011 18:45

AW: RSA-Verschlüsselung
 
Zitat:

Zitat von DeddyH (Beitrag 1133016)
Außer "hoch_mod" sehe ich da nichts weiter. Ich kann mir nicht vorstellen, dass das schon alles sein soll (ich habe auch keinen Plan von RSA, aber AFAIK arbeitet der mit Schlüsselpaaren, das muss also definitiv entschieden mehr Code sein).

Da der Schlüssel anscheinend gegeben ist, sollte diese Funktion tatsächlich ausreichen.
Delphi-Quellcode:
const p = 11;
const q = 13;
const e = 23;
const d = 47;
Delphi-Quellcode:
function RSAWerkzeug.verschluesselCode: Integer;
begin
  zVerschluesselterCode := hoch_mod({Hier die richtigen Parameter einsetzten.});
end;

function RSAWerkzeug.entschluesselCode: Integer;
begin
  zEingabeCode := hoch_mod({Hier die richtigen Parameter einsetzten.});
end;
Für die Textverschlüsselung würde ich es versuchen den Text buchstabenweise zu ent-/verschlüsseln (bei dem gegebenen Schlüssel geht das aber nur für Ansii-Zeichen).


Aber wenn dieser Quelltext eine Vorgabe ist :kotz:

m500 27. Okt 2011 18:51

AW: RSA-Verschlüsselung
 
thx


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 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