Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
Turbo Delphi für Win32
|
Re: XOR-Verschlüsselung
15. Okt 2004, 21:46
hamZta hat aus der XOR-Verschlüsselungsroutine eine ganze DLL geschrieben:
Delphi-Quellcode:
{ Dateiverschlüsselung, by hamZta }
{ - Zum Verschlüsseln CryptFile(datei, neuerName) verwenden }
{ - Zum Entschlüsseln DeCryptFile verwenden }
{ Verschlüsselt und Entschlüsselt 500 Dateien in 6 Sekunden }
library dll2;
uses
SysUtils,
Classes;
{$R *.res}
//Das Array in dem die Werte gespeichert sind
var key: Array[1..6] Of Byte;
function SetKey(k1,k2,k3,k4,k5,k6: Integer):integer; stdcall;
begin
//Alle Werte füllen
key[1] := k1;
key[2] := k2;
key[3] := k3;
key[4] := k4;
key[5] := k5;
key[6] := k6;
end;
//Funktion zum Verschüsseln einer Datei
// oldFile: PChar = Die Datei die verschlüsselt werden soll
// newFile: PChar = Der Name den die verschlüsselte Datei bekommen soll
Function CryptFile(oldFile, newFile: PChar): integer; stdcall;
var oFile, nFile: File of Byte;
var cByte, currKey: Byte;
var i: Integer;
begin
//Die neue Datei schreiben
AssignFile(nFile, String(newFile));
ReWrite(nFile);
//Die alte Datei öffnen
AssignFile(oFile, String(oldFile));
Reset(oFile);
//Hauptvorgang
//Die ganze alte Datei durchgehen
for i := 0 to FileSize(oFile)-1 do
begin
//Ein Byte auslesen
Read(oFile,cByte);
//Den aktuellen Keywert verändern
currKey := currKey + 1;
//Der Key ist nur 6stellig
if currKey > 6 then currKey := 1;
//Das Byte mithilfe von Xor und dem aktuellem Keywert verschlüsseln
cByte := cByte Xor key[currKey];
//Und in die neue Datei schreiben
Write(nFile,cByte);
end;
closefile(oFile);
closefile(nFile);
end;
//Die Funktion DeCryptFile ist genau dieselbe Funktion wie CryptFile
//(Existiert eigentlich nur der Übersicht halber :D)
Function DeCryptFile(oldFile, newFile: PChar): integer; stdcall;
var oFile, nFile: File of Byte;
var cByte, currKey: Byte;
var i: Integer;
begin
//Write new File
AssignFile(nFile, String(newFile));
ReWrite(nFile);
//Read old File
AssignFile(oFile, String(oldFile));
Reset(oFile);
//Hauptvorgang
for i := 0 to FileSize(oFile)-1 do
begin
Read(oFile,cByte);
currKey := currKey + 1;
if currKey > 6 then currKey := 1;
cByte := cByte Xor key[currKey];
Write(nFile,cByte);
end;
closefile(oFile);
closefile(nFile);
end;
exports
CryptFile name 'CryptFileA',
DeCryptFile name 'DeCryptFileA',
SetKey name 'SetKeyA';
begin
end.
Der Originalbeitrag inkl. Diskussion ist hier zu finden.
|
|
Zitat
|