Delphi-PRAXiS
Seite 6 von 9   « Erste     456 78     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   VerschlüsselungsProgramm (https://www.delphipraxis.net/11391-verschluesselungsprogramm.html)

MaBuSE 22. Jul 2004 13:12

Re: VerschlüsselungsProgramm
 
Zitat:

Zitat von sCrAPt
fnt zve jraa qh syvrfraq Ebg68+Ebg0 xnaafg ;)

http://og4all.de/s, sCrAPt

Mitlerweile kann ich das nicht mehr so gut. :-(

Als Stütze benutze ich heutzutage eine kleine Matrix
(aus den oberen Buchstaben werden die unteren und umgekert)

ABCDEFGHIJKLM
NOPQRSTUVWXYZ

01234
56789

----------------

Folgende Verschlüsselung ist auch nicht schlecht.
Damit dürften wohl unsere ausländischen Freunde die meisten Probleme haben.

Zitat:

Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät ist es nchit witihcg, in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige, was wcthiig ist, ist dsas der estre und der leztte Bstabchue an der ritihcegn Pstoiion sehten. Der Rset knan ttoaelr Bsinöldn sien, todzterm knan man ihn onhe Pemoblre lseen. Das legit daarn, dsas wir nihct jeedn Bstachuebn enzelin leesn, snderon das Wrot als Gnaezs.

Aenogym 22. Jul 2004 13:55

Re: VerschlüsselungsProgramm
 
Zitat:

Zitat:

Gmäeß eneir Sutide eneir elgnihcesn Uvinisterät ist es nchit witihcg, in wlecehr Rneflogheie die Bstachuebn in eneim Wrot snid, das ezniige, was wcthiig ist, ist dsas der estre und der leztte Bstabchue an der ritihcegn Pstoiion sehten. Der Rset knan ttoaelr Bsinöldn sien, todzterm knan man ihn onhe Pemoblre lseen. Das legit daarn, dsas wir nihct jeedn Bstachuebn enzelin leesn, snderon das Wrot als Gnaezs.

also das finde ich ja geil. vor allem, weil man es wirklich fließend lesen kann. ist ja hammer :mrgreen:

edit: das pack ich mir gleich in meine signatur (zumindest in dem forum, wo die so lang sein dürfen :D )

Aenogym

Luckie 22. Jul 2004 13:55

Re: VerschlüsselungsProgramm
 
Erstens ist das schon ein alter Hut und zweitens hat das nun gar nichts mehr mit Verschlüsselung zu tun. :warn:

MaBuSE 22. Jul 2004 14:12

Re: VerschlüsselungsProgramm
 
Zitat:

Zitat von Luckie
Erstens ist das schon ein alter Hut und zweitens hat das nun gar nichts mehr mit Verschlüsselung zu tun. :warn:

1. Hast Du Recht, das ist ein alter Hut.
und
2. doch, das ist eine Verschlüsselung!!! Und zwar eine "Transposition". :warn:

Das Scherzprogramm (1. Beitrag in diesem Thread) ist auch eine "Transposition" !!!


Im Wikipedia steht:

Verschlüsselung nennt man den Vorgang, bei dem ein Klartext mit Hilfe eines Verschlüsselungsverfahrens (Algorithmus) in einen Geheimtext umgewandelt wird.

Den umgekehrten Vorgang nennt man Entschlüsselung.

Man unterscheidet 4 Verschlüsselungsarten:

Transposition
Bei einer Transposition werden die Zeichen untereinander vertauscht. Zum Beispiel wenn man ein Text rückwärts schreibt oder jeden 2. mit jedem 5. Buchstaben vertauscht.

Substitution
Bei der Substitution werden Zeichen durch andere ersetzt. Zum Beispiel können alle Buchstaben durch Zahlen ersetzt werden.

Chiffrierung
Bei der Chiffrierung werden alle Zeichen einzeln anhand eines Verschlüsselungsverfahrens verschlüsselt. Beispiel hierfür ist die Cesar Verschlüsselung bei welcher ein Zeichen aus dem Alphabet als Schlüssel verwendet wird und anhand der Position des Buchstabens im Alphabet die Buchstaben des Klartextes zyklisch verschoben werden.

Codierung
Beim Codieren werden alle Zeichen eines Zeichenvorrats einem anderen Zeichenvorrat zugeordnet. Ein Beispiel hierfür ist die codierung aller Alphabetischen Zeichen in den ASCII Code.


[edit]hier der Link zum Wikipedia: http://de.wikipedia.org/wiki/Verschl%FCsselung[/edit]
[edit]noch ein Link: http://de.wikipedia.org/wiki/Kategorie:Kryptologie[/edit]

TeronG 28. Jul 2004 13:56

Re: VerschlüsselungsProgramm
 
Zitat:

Zitat von dizzy
[ot].... Postet aber jemand mal ein scherzhaft gemeintes Programm, so hagelt es ernsthafte Verbesserungsvorschläge noch und nöcher :lol: ....[/ot]

Jo ... der witz ist wohl voll in die Hose gegangen .. aber wenigstens hab ich nun ne recht ordentliche Verschlüsselung in meinen Proggies :-D
Weiter so Jungs :wink:

papillon03 5. Nov 2004 16:59

Re: VerschlüsselungsProgramm
 
Für Fetischisten der Objectorientierung :zwinker: habe ich versucht, das ganze mal in zwei Klassen zu Kapseln:

Delphi-Quellcode:
unit rc4;

// Code written by Hagen ([url]http://www.delphipraxis.net/topic12881,15.html[/url])
// unit created by maximov 29.07.2004
// Encapsulation in Class papillon03 5.11.2004

interface

type

TCryptBytes = array[Byte] of Byte;

TtrRC4Crypt = class(TObject)
private
  FcBytes: TCryptBytes;
  FcI, FcJ: Byte;
public
  constructor Create;
  destructor Destroy; override;
  procedure Init(const Key: string);
  procedure CodeBytes(const Source; var Dest; Count: Integer);
  function Code(const Value: string): string;
  function CodeOnce(const Value, Password: String): string;
  procedure SelfEncryptByteArray;
  procedure Clear;
  property CryptBytes: TCryptBytes read FcBytes;
end;

TtrRC4Random = class(TObject)
private
  Frc4crypt: TtrRC4Crypt;
public
  constructor Create;
  destructor Destroy; override;
  function Random: Cardinal;
end;


implementation

type
  PByteArray = ^TByteArray;
  TByteArray = array[0..($FFFF shr 1)-1] of byte;

function TtrRC4Crypt.Code(const Value: string): string;
var
  Count: Integer;
begin
  Count := Length(Value);
  SetLength(Result, Count);
  CodeBytes(Value[1], Result[1], Count);
end;

function TtrRC4Crypt.CodeOnce(const Value, Password: string): string;
begin
  Init(Password);
  try
    Result := Code(Value);
  finally
    Clear;
  end;
end;


procedure TtrRC4Crypt.Init(const Key: String);
var
  r,s,t,k: Byte;
  u,l: Integer;
begin
  l := Length(Key);
  FcI := 0;
  FcJ := 0;
  for s := 0 to 255 do FcBytes[s] := s;
  r := 0;
  u := 0;
  for s := 0 to 255 do
  begin
    if u < l then k := PByteArray(Key)[u] else k := 0;
    Inc(u);
    if u >= l then u := 0;

    Inc(r, FcBytes[s] + k);
    t := FcBytes[s];
    FcBytes[s] := FcBytes[r];
    FcBytes[r] := t;
  end;
end;

procedure TtrRC4Crypt.CodeBytes(const Source; var Dest; Count: Integer);
var
  s: Integer;
  t: Byte;
begin
  for s := 0 to Count -1 do
  begin
    Inc(FcI);
    t := FcBytes[FcI];
    Inc(FcJ, t);
    FcBytes[FcI] := FcBytes[FcJ];
    FcBytes[FcJ] := t;
    Inc(t, FcBytes[FcI]);
    TByteArray(Dest)[s] := TByteArray(Source)[s] xor FcBytes[t];
  end;
end;

procedure TtrRC4Crypt.Clear;
begin
  FillChar(FcBytes, SizeOf(FcBytes), 0);
  FcI := 0;
  FcJ := 0;
end;

constructor TtrRC4Crypt.Create;
begin
end;

destructor TtrRC4Crypt.Destroy;
begin
  Clear;
  inherited;
end;

procedure TtrRC4Crypt.SelfEncryptByteArray;
begin
  CodeBytes(FcBytes, FcBytes, SizeOf(FcBytes));
end;

constructor TtrRC4Random.Create;
begin
  inherited;
  Frc4crypt := TtrRC4Crypt.Create;
  with Frc4crypt do begin
    Init('5C103319-9C6F-4F88-BBDC-752779958047');
  end;
end;

destructor TtrRC4Random.Destroy;
begin
  Frc4crypt.Free;
  inherited;
end;

function TtrRC4Random.Random: Cardinal;
type
  PRC4Cast = ^TRC4Cast;
  TRC4Cast = record
    FirstSBOX: Cardinal;
  end;

begin
// verschlüssele die dynamsiche SBOX von RC4Random.D mit sich selber und gebe die 4 ersten Bytes
// als Zufallswert zurück !!
  with Frc4crypt do begin
    SelfEncryptByteArray;
    Result := PRC4Cast(@CryptBytes).FirstSBOX;
  end;
end;

end.
Natürlich ergibt sich dadurch ein gewisser Overhead, ich hoffe aber trotzdem was beigetragen zu haben. Insbesondere bei Random wäre super, wenn jemand die Gleichwertigkeit verifizieren könnte.

Ciao Papillon03

maximov 7. Nov 2004 12:37

Re: VerschlüsselungsProgramm
 
Zitat:

Zitat von papillon03
....
Natürlich ergibt sich dadurch ein gewisser Overhead, ich hoffe aber trotzdem was beigetragen zu haben. Insbesondere bei Random wäre super, wenn jemand die Gleichwertigkeit verifizieren könnte.

Ciao Papillon03

Ich hatte die random funktion tatsächlich mal getestet: Sie liefert sehr gute ergebnisse, auch wenn sie wesentlich langsamer als delphi.random ist. Die durchschnittswerte waren bei beiden funktionen sehr nah an 0.5, also genau da wo sie sein sollten 8)

PS: Willkommen in der DP :dp:

mr47 8. Dez 2004 20:44

Re: VerschlüsselungsProgramm
 
Man kann einen Text auch in einzelne Zeichen zerlegen und dann in AscII-Code umwandeln. Danach noch evt den Ascii-Code mit einer Formel (z.B.: Ascii-code*2+100) oder so bearbeiten. Zum entschlüsseln dann einfach Codiertes-Zeichen-100:2. Allerdings muss man zwischen jedes Zeichen ein Trennzeichen z.B: ; setzen. So hab ich des mal gemacht. Des funktioniert einwandfrei.

Was meint ihr, wie sicher das ist??

//edit: Vpu xnaa nhpu Ebg68!

Luckie 8. Dez 2004 20:46

Re: VerschlüsselungsProgramm
 
Nicht sehr sicher. Eine einfache Häufigkeitsanalyse sollte reichen, um den Code zu knacken.

negaH 9. Dez 2004 08:26

Re: VerschlüsselungsProgramm
 
Zitat:

Die durchschnittswerte waren bei beiden funktionen sehr nah an 0.5, also genau da wo sie sein sollten
Tja die Statistik mit den Durchschnittswerten !?

Nachfolgende Random Funktion ist sogar noch besser und schneller und liefert den Perfekten Durchschnitt von 0.5 !!

Delphi-Quellcode:
var
  Counter: Byte = 0;

function BestRandom: Boolean;
begin
  Result := Odd(Counter);
  Inc(Counter);
end;
Schön, als Demonstration zeigt dies das zur Beurteilung eines Zufallsgenerators eben nicht nur eine Durchschnittsstatistik ausreicht.

Bei der grafischen Analyse der LCG Algorithmen == Delphi Random(), wird man feststellen das sich in den grafischen Bildern starke sich wiederholende Artefakte ergeben. D.h. LCG's sind keineswegs gute Zufallsgeneratoren, sie reichen gerademal für Statistische Berechnungen aus.
Im Gegensatz dazu würde obige RC4 basierte Funktion ein grafisches Bild ergeben das ein Weises Rauschen darstellt, also absolut keine Regelmäßigkeiten enthält.

Gruß Hagen


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:21 Uhr.
Seite 6 von 9   « Erste     456 78     Letzte »    

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