unit Encodes;
interface
uses
Sysutils; type PBYTE=^BYTE;
function GetEncodeString(szSrc:string;szSalt:string='BLUELAYER'):string;
function GetEncodeHexString(szSrc:string;szSalt:string='BLUELAYER'):string;
function GetDecodeString(szSrc:string;szSalt:string='BLUELAYER'):string;
function GetDecodeHexString(szSrc:string;szSalt:string='BLUELAYER'):string; function Encode(szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer;stdcall;
function Decode(szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer;stdcall;
function EncodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;stdcall;
function DecodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;stdcall;implementation
function Encode( szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer; external 'ENCODE.DLL';
function Decode(szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer;external 'ENCODE.DLL';
function EncodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;external 'ENCODE.DLL';
function DecodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;external 'ENCODE.DLL'; function GetEncodeString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult:Pchar;
status:integer; begin
Result:='';
strlen:=4*Length(szSrc);
GetMem(chResult,strlen);
status:=EncodeString(PChar(szSrc),PChar(szSalt),chResult,strlen);
if status=0 then
Result:=chResult;
FreeMem(chResult);
end; function GetEncodeHexString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult,chTp:Pchar;
i,status:integer;
begin
result:='';
strlen:=4*Length(szSrc);
GetMem(chResult,strlen);
status:=EncodeString(PChar(szSrc),PChar(szSalt),chResult,strlen);
if status=0 then
begin
chTp:=chResult;
for i:=0 to strlen-1 do
begin
result:=result+Format('%2x',[ord(chTp^)]);
inc(chTp);
end;
end;
freemem(chResult);
end; function GetDecodeString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult:Pchar;
status:integer;
begin
result:='';
strlen:=2*Length(szSrc);
GetMem(chResult,120);
status:=DecodeString(PChar(szSrc),PChar(szSalt),chResult,strlen);
if status=0 then
result:=result+chResult;
freemem(chResult);
end; function GetDecodeHexString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult:Pchar;
i,status:integer;
szHexSrc,szStr:string;
begin
result:='';
i:=1;
while i<length(szSrc) do
begin
szStr:='$'+szSrc[i]+szSrc[i+1];
szHexSrc:=szHexSrc+chr(strtoint(szStr));
inc(i);
inc(i);
end;
strlen:=2*Length(szHexSrc);
GetMem(chResult,strlen);
status:=DecodeString(PChar(szHexSrc),PChar(szSalt),chResult,strlen);
if status=0 then
result:=result+chResult;
freemem(chResult);
end;
end.
interface
uses
Sysutils; type PBYTE=^BYTE;
function GetEncodeString(szSrc:string;szSalt:string='BLUELAYER'):string;
function GetEncodeHexString(szSrc:string;szSalt:string='BLUELAYER'):string;
function GetDecodeString(szSrc:string;szSalt:string='BLUELAYER'):string;
function GetDecodeHexString(szSrc:string;szSalt:string='BLUELAYER'):string; function Encode(szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer;stdcall;
function Decode(szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer;stdcall;
function EncodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;stdcall;
function DecodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;stdcall;implementation
function Encode( szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer; external 'ENCODE.DLL';
function Decode(szSrc:PBYTE;szSrcLen:Longword;szSalt:PBYTE;szSaltLen:Longword;szDest:PBYTE;var szDestLen:Longword):integer;external 'ENCODE.DLL';
function EncodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;external 'ENCODE.DLL';
function DecodeString(szSrc:PCHAR;szSalt:PCHAR;szDest:PCHAR;var szDestLen:Longword):integer;external 'ENCODE.DLL'; function GetEncodeString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult:Pchar;
status:integer; begin
Result:='';
strlen:=4*Length(szSrc);
GetMem(chResult,strlen);
status:=EncodeString(PChar(szSrc),PChar(szSalt),chResult,strlen);
if status=0 then
Result:=chResult;
FreeMem(chResult);
end; function GetEncodeHexString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult,chTp:Pchar;
i,status:integer;
begin
result:='';
strlen:=4*Length(szSrc);
GetMem(chResult,strlen);
status:=EncodeString(PChar(szSrc),PChar(szSalt),chResult,strlen);
if status=0 then
begin
chTp:=chResult;
for i:=0 to strlen-1 do
begin
result:=result+Format('%2x',[ord(chTp^)]);
inc(chTp);
end;
end;
freemem(chResult);
end; function GetDecodeString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult:Pchar;
status:integer;
begin
result:='';
strlen:=2*Length(szSrc);
GetMem(chResult,120);
status:=DecodeString(PChar(szSrc),PChar(szSalt),chResult,strlen);
if status=0 then
result:=result+chResult;
freemem(chResult);
end; function GetDecodeHexString(szSrc:string;szSalt:string):string;
var
strlen:LongWord;
chResult:Pchar;
i,status:integer;
szHexSrc,szStr:string;
begin
result:='';
i:=1;
while i<length(szSrc) do
begin
szStr:='$'+szSrc[i]+szSrc[i+1];
szHexSrc:=szHexSrc+chr(strtoint(szStr));
inc(i);
inc(i);
end;
strlen:=2*Length(szHexSrc);
GetMem(chResult,strlen);
status:=DecodeString(PChar(szHexSrc),PChar(szSalt),chResult,strlen);
if status=0 then
result:=result+chResult;
freemem(chResult);
end;
end.
解决方案 »
- 本人初学 请帮帮忙
- 线程函数能不能定义2个以上参数用CreateThread函数来传递啊
- toolbar中显示文字又显示图片
- Delphi的HTTP事件代码有错,大虾进来看。
- 怎样读写其它进程的核心态内存?如:线性地址E0000000H处DWORD值。
- 使用wiseinstallation打包delphi7.0的bde程序,出现如下错误提示:指定了不正确的bde版本,请确定,本机当前配置bde的版本是5.0.1.22或更
- 调用其它程序问题!
- 为什么我的脚本加加密后不能使用? 急!!!
- 如何将自解压文件解压到指定目录,并自动运行其中的某个文件?
- 谁有installshield7.0的中文语言包的下载地址,军用
- 再问:**** 多表联合查询SQL该怎么写(详情请进,高分求解) ****
- 帮忙给出一个网络传输的最佳方案?
function Tfuncs.Encrypt(Src:String; Key:String):String;stdcall;
var KeyLen,KeyPos,Offset,SrcPos,SrcAsc:Integer;
Dest :ShortString;
begin
KeyLen:=Length(Key);
if KeyLen = 0 then Key:='I Love JFM';
KeyPos:=0;
Randomize;
Offset:=Random(256);
Dest:=Format('%1.2x',[Offset]);
for SrcPos := 1 to Length(Src) do
begin
SrcAsc:=(Ord(Src[SrcPos]) + Offset) MOD 255;
if KeyPos < KeyLen then KeyPos:= KeyPos + 1
else KeyPos:=1;
SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
Dest:=Dest + Format('%1.2x',[SrcAsc]);
Offset:=SrcAsc;
end;
Result:=Dest;
end;//解密函数
function Tfuncs.Decrypt(Src:String; Key:String):String;stdcall;
var KeyLen,KeyPos,Offset,SrcPos,SrcAsc,TmpSrcAsc:Integer;
Dest:String;
begin
KeyLen:=Length(Key);
if KeyLen = 0 then Key:='I Love JFM';
KeyPos:=0;
Offset:=StrToInt('$'+ Copy(Src,1,2));
SrcPos:=3;
repeat
SrcAsc:=StrToInt('$'+ Copy(Src,SrcPos,2));
if KeyPos < KeyLen Then KeyPos := KeyPos + 1
else KeyPos := 1;
TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
if TmpSrcAsc<=Offset then TmpSrcAsc:=255+TmpSrcAsc-Offset
else TmpSrcAsc:=TmpSrcAsc-Offset;
Dest:=Dest + Chr(TmpSrcAsc);
Offset:=SrcAsc;
SrcPos:=SrcPos+2;
until SrcPos>=Length(Src);
Result:=Dest;
end;