AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte VerschlüsselungsProgramm
Thema durchsuchen
Ansicht
Themen-Optionen

VerschlüsselungsProgramm

Ein Thema von devnull · begonnen am 5. Nov 2003 · letzter Beitrag vom 9. Aug 2007
Antwort Antwort
Seite 6 von 9   « Erste     456 78     Letzte »    
Benutzerbild von devnull
devnull
Registriert seit: 5. Okt 2003
Hi,
ich hab jetzt doch mal, angeregt von anderen Tools ein eigenes Programm geproggt.
Dies ist jedoch nur eine Demo-Version, bei der es euch erlaubt ist
> EINFACHE TEXTE
> MAXIMAL 1000 ZEICHEN
zu kodieren.

Naja, über keine Kritik würde ich mich freun.

devnull
Angehängte Dateien
Dateityp: exe datasecure.exe (399,0 KB, 187x aufgerufen)
 
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#51
  Alt 22. Jul 2004, 12:12
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.
  Mit Zitat antworten Zitat
Benutzerbild von Aenogym
Aenogym

 
Delphi 7 Enterprise
 
#52
  Alt 22. Jul 2004, 12:55
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

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

Aenogym
Steffen Rieke
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#53
  Alt 22. Jul 2004, 12:55
Erstens ist das schon ein alter Hut und zweitens hat das nun gar nichts mehr mit Verschlüsselung zu tun.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von MaBuSE
MaBuSE

 
Delphi 10 Seattle Enterprise
 
#54
  Alt 22. Jul 2004, 13:12
Zitat von Luckie:
Erstens ist das schon ein alter Hut und zweitens hat das nun gar nichts mehr mit Verschlüsselung zu tun.
1. Hast Du Recht, das ist ein alter Hut.
und
2. doch, das ist eine Verschlüsselung!!! Und zwar eine "Transposition".

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]
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

 
Delphi 2007 Professional
 
#55
  Alt 28. Jul 2004, 12:56
Zitat von dizzy:
[ot].... Postet aber jemand mal ein scherzhaft gemeintes Programm, so hagelt es ernsthafte Verbesserungsvorschläge noch und nöcher ....[/ot]
Jo ... der witz ist wohl voll in die Hose gegangen .. aber wenigstens hab ich nun ne recht ordentliche Verschlüsselung in meinen Proggies
Weiter so Jungs
  Mit Zitat antworten Zitat
papillon03
 
#56
  Alt 5. Nov 2004, 15:59
Für Fetischisten der Objectorientierung 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
  Mit Zitat antworten Zitat
Benutzerbild von maximov
maximov

 
Delphi 2005 Professional
 
#57
  Alt 7. Nov 2004, 11:37
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
  Mit Zitat antworten Zitat
Benutzerbild von mr47
mr47

 
Delphi 2005 Personal
 
#58
  Alt 8. Dez 2004, 19:44
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!
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

 
Delphi 2006 Professional
 
#59
  Alt 8. Dez 2004, 19:46
Nicht sehr sicher. Eine einfache Häufigkeitsanalyse sollte reichen, um den Code zu knacken.
Michael
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH
 
#60
  Alt 9. Dez 2004, 07:26
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 9   « Erste     456 78     Letzte »    


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 14:38 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