unit Uni_DataModule;
interface
uses
SysUtils, Classes,Windows,Dialogs;
type
TDM1 = class(TDataModule)
private
{ Private declarations }
public
{ Public declarations }
end;
Function FileEncrypt(const SourceFile:String):string;
Function FileDecrypt(const SourceFile:String):string;
var
DM1: TDM1;
GS_Md5Str:string;
GS_SelBtnNum:integer;
implementation
{$R *.dfm}
//////////////////////Swf文件加密///////////////////////////////
Function FileEncrypt(const SourceFile:String):string;
var
SrcFile:File of Byte;
TmpByte:array[0..9] of Byte;
i:integer;
begin
TmpByte[0]:=56;
TmpByte[1]:=89;
TmpByte[2]:=87;
Assign(SrcFile,SourceFile);
try
for i:=0 to 2 do begin
Reset(SrcFile);
Seek(SrcFile,i); //定位到第i个字节处
Write(SrcFile,TmpByte[i]); //写入一个字节,如果该位置原来是'A'则现在是'B'
end;
Seek(SrcFile,8);
TmpByte[8]:=16;
Write(SrcFile,TmpByte[8]);
Seek(SrcFile,9);
TmpByte[9]:=57;
Write(SrcFile,TmpByte[9]);
finally
CloseFile(SrcFile);
end;
result:=SourceFile;
end;
//////////////////////Swf文件解密///////////////////////////////
Function FileDecrypt(const SourceFile:String):string;
var
SrcFile:File of Byte;
TmpByte:array[0..9] of Byte;
begin
if not FileExists(SourceFile) then begin
ShowMessage(SourceFile+'不存在');
exit;
end;
Assign(SrcFile,SourceFile);
try
Reset(SrcFile);
Seek(SrcFile,0); //定位到第1个字节处
TmpByte[0]:=67;
Write(SrcFile,TmpByte[0]); //写入一个字节,如果该位置原来是'A'则现在是'B'
Seek(SrcFile,1); //定位到第2个字节处
TmpByte[1]:=87;
Write(SrcFile,TmpByte[1]);
Seek(SrcFile,2);
TmpByte[2]:=83;
Write(SrcFile,TmpByte[2]);
Seek(SrcFile,8);
TmpByte[8]:=120;
Write(SrcFile,TmpByte[8]);
Seek(SrcFile,9);
TmpByte[9]:=156;
Write(SrcFile,TmpByte[9]);
finally
CloseFile(SrcFile);
end;
result:=SourceFile;
end;
end.
本文介绍了一种针对SWF文件的简单加解密方法,通过直接修改文件头特定位置的字节来实现文件的保护。加密过程涉及对文件头的几个关键位置进行字节替换,而解密则是对这些位置进行逆操作。此方法适用于基本的安全需求。
1万+

被折叠的 条评论
为什么被折叠?



