Thema: Delphi XOR-Verschlüsselung

Einzelnen Beitrag anzeigen

CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: XOR-Verschlüsselung

  Alt 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.
  Mit Zitat antworten Zitat