Autor Beitrag
Cash
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 40



BeitragVerfasst: Mo 03.03.03 21:36 
Hi@all

Wie ihr an der Zahl meiner Beiträge unschwer erkennen könnt bin ich ein NEwbe. Da ich gestern irgendwann was von VErschlüsselung einer Datei gehört habe, wollte ich mal fragen ob es da draußen irgendjemanden gibt der mir eine Standard-Verschlüsselung posten kann natürlich mit Erläuterung, damit ich es nachvollziehen kann.

Ich will eine Datei ( In der zb Bei einem Spiel Punktestand und so gespeichert werden) verschlüsseln..(am besten mit Passwort wenns geht) damit keiner die Datei bzw. den Inhalt verändern kann.

Hoffe einer kann mir herlfen.

WEr mir was schicken kann hier meine E-Mail

SohndesLichts.1g9i8g4a@web.de oder per ICQ unten clicken

thx4all
CASH
torstenheinze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 461



BeitragVerfasst: Mo 03.03.03 21:44 
ausblenden volle Höhe 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:
procedure XORFile(Source,Dest,Schluessel:String);
(*Ent-/Verschlüsselt die Datei Source und schreibt sie in die Datei Dest.*)
var buffer:Array[1..40000] of Byte;
// dynamischer Speicher wäre schöner
f,f2:file;
loop,loop2,gelesen:integer;
begin
if Trim(Schluessel)='' then
Schluessel:='asdlkfjöalskjdfölaksdjfölaksjfd';

AssignFile(f,Source);
ReSet(f,1);

AssignFile(f2,Dest);
ReWrite(f2,1);

loop2:=1;
while not EOF(f) do
begin
BlockRead(f,buffer,sizeof(buffer),gelesen);

for loop:= 1 to Gelesen do
begin
buffer[loop]:=buffer[loop] XOR Ord(Schluessel[loop2]);
Inc(loop2);
if loop2>length(Schluessel) then
loop2:=1;
end;

// XOR
BlockWrite(f2,buffer,gelesen);
end;

// bis zum Ende der Datei
CloseFile(f);
CloseFile(f2);
end;
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Mo 03.03.03 21:46 
Schau mal hier
www.scramdisk.clara.net/

oder google mal nach
Author: Hagen Reddmann
Remarks: freeware, shareware
Description: Delphi Encryption Compendium Part I-III

sind nette fertige Komponenten incl. Sources mit Kodieralgoritmen für:
5 Checksum: CRC32, XOR32bit, XOR16bit, CRC16-CCITT, CRC16-Standard

23 Hash: MD4, MD5, SHA (other Name SHS), SHA1,
RipeMD128, RipeMD160, RipeMD256, RipeMD320,
Haval (128, 160, 192, 224, 256) with Rounds,
Snefru, Square, Tiger
Sapphire II (128, 160, 192, 224, 256, 288, 320)


40 Cipher: Gost, Cast128, Cast256, Blowfish, IDEA
Mars, Misty 1, RC2, RC4, RC5, RC6, FROG, Rijndael,
SAFER, SAFER-K40, SAFER-SK40,SAFER-K64, SAFER-SK64,
SAFER-K128, SAFER-SK128, TEA, TEAN, Skipjack, SCOP,
Q128, 3Way, Twofish, Shark, Square, Single DES, Double DES,
Triple DES, Double DES16, Triple DES16, TripleDES24,
DESX, NewDES, Diamond II, Diamond II Lite, Sapphire II

mfg
MSCH
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 23.10.04 15:08 
Folgender algo ist kurz und je nach länge des textes+schlüssels unknackbar (vorrausgesetzt, schlüssel und text sind unbekannt... -.-)
ausblenden Delphi-Quelltext
1:
ergebnisbuchstabe:=char(byte(ord(text[i])+ord(schlüssel[i])));					


das geanze in 3 funktionen gepackt:
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:
function keychar(s:string) : char; //Diese Funktion liefert den Schlüssel "s" Buchstabe für Buchstabe
begin
If s='' then begin //wenn kein Schlüssel angegeben ist
Inc(keyint); //erhöhe keyint um eins, keyint ist der Index einer Stelle im Schlüssel
KeyChar:=Form1.Edit1.Text[keyint]; //Keychar ist ein Buchstabe aus dem Schlüssel
keyword:=Form1.Edit1.Text; //eher unnötige Puffervariable. der sowieso nicht vorhandenen Übersicht wegen...
If Keyint=Length(keyword) then Keyint:=0; //Überprüft, ob das Ende des Schlüssels erreicht ist. Falls ja, Neustart.
end else begin //Schlüssel wurde angegeben.
Inc(keyint);
KeyChar:=s[keyint];
If Keyint=Length(s) then Keyint:=0;
end;
end;

function ver(text, key:String) :String; //Verschlüsselt den "text" mit dem Schlüssel "key"
var s,s2:String;
    i:integer;
begin
s2:= '';
keyint:=0;
for i:=1 to length(Text) do begin //vom ersten bis zum letzten Buchstaben des Textes...
  s:=Char(byte( Ord(Text[i])+(Ord(keychar(key))))); //Verwandel den Buchstaben Nummer "i" in eine Zahl, addiere die Zahl des Schlüssels, verwandel das ganze zurück in einen Buchstaben (der Befehl Char() wird fast immer mit char(byte(65)) benutzt. warum auch immer...(65 ist übrigens 'a'))
  s2:=s2+s; //füge den neuen Buchstaben an "s2" an
end;
ver:=s2; //liefere "s2" zurück
s2:='';
end;

function ent(text, key:String) :String; //Ist fast die gleiche Funktion wie "ver(s:String):String", nur mit "Verwandel den Buchstaben Nummer "i" in eine Zahl, SUBTRAHIERE die Zahl des Schlüssels, verwandel das ganze zurück in einen Buchstaben"!!
var s,s2:String;  //keine weiteren Kommentare nötig, oder?
    i:integer;
begin
s2:= '';
keyint:=0;
for i:=1 to length(Text) do begin
  s:=Text[i];
  s:=Char(byte( Ord(Text[i])-(Ord(keychar(key)))));
  s2:=s2+s;
end;
ent:=s2;
s2:='';
end;


du solltest den schlüssel so lang wie den text machen (und zufallsgeneriert!) dann ist der Algo unknackbar. wenn niemand weis, wie der klartext ist! ich würde den klartext einer liste von z.B. Top10 der Punktezahlen etwas verwürfeln... arbeite grad an einem entsprechenden algo nur... ich schaff den rückwärtsgang nicht -.-

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
MSCH
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1448
Erhaltene Danke: 3

W7 64
XE2, SQL, DevExpress, DevArt, Oracle, SQLServer
BeitragVerfasst: Sa 23.10.04 19:30 
was ich recht stark bezweifle.
dazu muss der schlüssel
a) genau solang sein wie der text (schwachfug)
b) sich nicht wiederholen (??)
c) die summe beider muss <255 sein, ansonsten gibts ein überlauf
d) da die summe kleiner als 255, schätze ich, brauch man, wenn überhaupt ein paar stunden

aufgrund von C) darf Ord(Klartext[i]) nur 128 sein und ord(Schlüssel[j]) ebenfalls.
Das bedeutet, du kannst für deinen zu verschlüsselnden Text garnicht alle Zeichen verwenden.

na dann tüftle mal noch ein wenig *grins*

grez
msch

_________________
ist das politisch, wenn ich linksdrehenden Joghurt haben möchte?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 23.10.04 19:54 
Stimmt so mit der Einschränkung nicht:
1. Ord liefert auch die Werte >= 128 zurück.
2. Er hat, wenn ich richtig gesehen hab, den Werte-Bereich mit Byte(Ausdruck) eingeschränkt, was zwar geht, mit Ausdruck AND $FF oder Ausdruck MOD 256 besser zu lösen wäre.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Sa 23.10.04 20:23 
ICh würde ja wohl keinen ungetesteten schwachsinn reinschreiben. die sache klappt, das hab ich ausprobiert. und die länge einer Top10 ist ja nicht viel oder??? ausserdem hab ich das ja gesagt, dass Text und schlüssel glecihlang sein müssen, und dass der schlüssel sich nicht wiederholt hab ich damit ebenfalls gesagt.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.