两个互相通讯的系统.....function EncrypStr(Src, Key: String): String; // 字符串加密函数
// 对字符串加密(Src:源 Key:密匙)
var
KeyLen: Integer;
KeyPos: Integer;
offset: Integer;
dest: string;
SrcPos: Integer;
SrcAsc: Integer;
Range: Integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
Randomize;
offset := Random(Range);
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 UncrypStr(Src, Key: String): string; // 字符串解密函数
// 对字符串解密(Src:源 Key:密匙)
var
KeyLen: Integer;
KeyPos: Integer;
offset: Integer;
dest: string;
SrcPos: Integer;
SrcAsc: Integer;
TmpSrcAsc: Integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
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 + AnsiChar(TmpSrcAsc);
offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Src);
Result := dest;
end;
// 对字符串加密(Src:源 Key:密匙)
var
KeyLen: Integer;
KeyPos: Integer;
offset: Integer;
dest: string;
SrcPos: Integer;
SrcAsc: Integer;
Range: Integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
KeyPos := 0;
Range := 256;
Randomize;
offset := Random(Range);
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 UncrypStr(Src, Key: String): string; // 字符串解密函数
// 对字符串解密(Src:源 Key:密匙)
var
KeyLen: Integer;
KeyPos: Integer;
offset: Integer;
dest: string;
SrcPos: Integer;
SrcAsc: Integer;
TmpSrcAsc: Integer;
begin
KeyLen := Length(Key);
if KeyLen = 0 then
Key := 'delphi';
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 + AnsiChar(TmpSrcAsc);
offset := SrcAsc;
SrcPos := SrcPos + 2;
until SrcPos >= Length(Src);
Result := dest;
end;
一个是ANSISTRING