本文整理自网络,侵删。
function UncrypKey(Src: AnsiString; Key: AnsiString): string;var idx: Integer; KeyLen: Integer; KeyPos: Integer; offset: Integer; dest: AnsiString; SrcPos: Integer; SrcAsc: Integer; TmpSrcAsc: Integer; Range: Integer;begin KeyLen := Length(Key); if KeyLen = 0 then Key := 'Think Space'; KeyPos := 0; SrcPos := 0; SrcAsc := 0; Range := 256; 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 := string(dest);end;
function Encryp(Src: AnsiString; Key: AnsiString): string;var idx: Integer; KeyLen: Integer; KeyPos: Integer; offset: Integer; dest: string; SrcPos: Integer; SrcAsc: Integer; TmpSrcAsc: Integer; Range: Integer;begin KeyLen := Length(Key); if KeyLen = 0 then Key := 'Think Space'; KeyPos := 0; SrcPos := 0; SrcAsc := 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;
相关阅读 >>
Delphi 跨平台的,在fmx中读取icon文件的每一帧到bitmap
更多相关阅读请进入《Delphi》频道 >>