谁能介绍几种字符串的加密算法?谢谢 安字母表顺序,后移3个,这个叫什么算法来着,忘了,是个很有名的入门级加密法比如原文:abc密文:cde 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //加密函数Function EncrypKey (Src:String; Key:String):string;varidx :integer;KeyLen :Integer;KeyPos :Integer;offset :Integer;dest :string;SrcPos :Integer;SrcAsc :Integer;TmpSrcAsc :Integer;Range :Integer;beginKeyLen:=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) dobeginSrcAsc:=(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 UncrypKey (Src:String; Key:String):string;varidx :integer;KeyLen :Integer;KeyPos :Integer;offset :Integer;dest :string;SrcPos :Integer;SrcAsc :Integer;TmpSrcAsc :Integer;Range :Integer;beginKeyLen:=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;repeatSrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);if TmpSrcAsc <= offset thenTmpSrcAsc := 255 + TmpSrcAsc - offsetelseTmpSrcAsc := TmpSrcAsc - offset;dest := dest + chr(TmpSrcAsc);offset:=srcAsc;SrcPos:=SrcPos + 2;until SrcPos >= Length(Src);Result:=Dest;end; 数据库备份相关!在线等! sos (来者有分!)有些难,关于程序的自启动控制Windows(类似于网吧中管理软件的开始阶段) 各位高手,我的递归循环错在什么地方? 我就这50分了,关于两个表关连问题 如何在程序中直接链接一个ftp地址? 求职:Delphi程序员 delphi如何编写自动运行程序 100分提问!跟者有分!“请大家努力完善Delphi论坛!” 急!急!为何报表不能连续打印?? Delphi程序员怎么找工作啊? Delphi6三层结构下对clientdataset作ApplyUpdates不成功,请帮忙!!
Function EncrypKey (Src:String; Key:String):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;//解密函数
Function UncrypKey (Src:String; Key:String):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;
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;