Hi Leute,
um den Code meines Programmes zu schützen, wollte ich es gerne RC4 verschlüsseln.
Zum Verschlüsseln nutze ich den Code aus der CL, ich habe den link gerade nicht parrat.
Mit der folgenden Funktion lese ich ersteinmal das Binär-File ein :
Delphi-Quellcode:
function FileToString(const AFilename: string; StartPos: Integer=0; EndPos: Integer=0): string;
var
FileStream : TFileStream;
wlCount: Integer;
begin
if FileExists(AFilename) then
begin
if StartPos < 0 then
StartPos := 0;
FileStream := TFileStream.Create(AFilename, fmOpenRead or fmShareDenyWrite);
try
if (EndPos <= StartPos) or (EndPos > FileStream.Size) then
EndPos := FileStream.Size;
wlCount := EndPos - StartPos;
if FileStream.Size > StartPos then
begin
SetLength(Result, wlCount);
FileStream.Seek(StartPos, soFromBeginning);
FileStream.Read(Result[1], wlCount);
end;
finally
FileStream.Free;
end;
end
else
Result := '';
end;
Der Author hat darauf hingewiesen, dass es zu Fehlern kommen kann, joar und das ist aufgetreten.
MyCode := FileToString(MeineBinärDateiDa);
RC4Init(MyContext,'MeinPasswort'); // Passwort
RC4Code(MyContext,MyCode, MyCryptCode,Length(MyCode)); // Verschlüsseln
RC4Done(MyContext);
So nun bekomme ich eine AccessViolation. Und zwar beim RC4Code.
Lasse ich mir "MyCode" ShowMessagen kommt auch nur "LMZ"
Wie gehe ich das besser an?
Marc S.