这个本来我我在DELPHI盒子看到的,后来我对其作了一点修改,这里上全部代码,可以直接用
首先有两个自定的转换函数:
- function myStrToHex(s:string):string; //字串转16进制
- var
- TmpStr:string;
- i:integer;
- begin
- TmpStr:='';
- for i:=1 to Length(s)do
- TmpStr:=TmpStr+IntToHex(ord(s[i]),2);
- Result:=TmpStr;
- end;
-
- function myHexToStr(S:string):string; //16进制转字串
- var
- HexS,TmpStr:string;
- i:Integer;
- a:Byte;
- begin
- HexS:=s;
- if Length(HexS) mod 2=1 then
- HexS:=HexS+'0';
- TmpStr:='';
- for i:=1 to(Length(HexS)div 2)do
- begin
- a:=StrToInt('$'+HexS[2*i-1]+HexS[2*i]);
- TmpStr:=TmpStr+Chr(a);
- end;
- Result:=TmpStr;
- end;
然后就是加密、解密函数了:
- {两个函数的参数相同,s为要加密、解密的字串;sKey为密匙}
- function EncryptStr(const s:string;sKey:string):string; //加密
- var
- i,j:Integer;
- HexS,HexsKey,MidS,TmpStr:string;
- a,b,c:byte;
- begin
- HexS:=myStrToHex(s);
- HexsKey:=myStrToHex(sKey);
- MidS:=HexS;
- for i:=1 to(Length(HexsKey)div 2)do
- begin
- if i<>1 then MidS:=TmpStr;
- TmpStr:=''; //下面要用到TmpStr,所以要清空
- for j:=1 to (Length(MidS)div 2)do
- begin
- a:=StrToInt('$'+midS[2*j-1]+midS[2*j]);
- b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);
- c:=a xor b;
- tmpstr:=TmpStr+myStrToHex(Chr(c));
- end;
- end;
- Result:=TmpStr;
- end;
-
- function DecryptStr(const s:string;sKey:string):string; //解密
- var
- i,j:Integer;
- HexS,HexsKey,MidS,TmpStr:string;
- a,b,c:Byte;
- begin
- HexS:=s;
- if Length(HexS)mod 2=1 then //检查是否为字符串
- begin
- ShowMessage('密文错误!');
- Exit;
- end;
- HexsKey:=myStrToHex(sKey);
- TmpStr:=HexS;
- MidS:=HexS;
- for i:=(length(HexsKey) div 2) downto 1 do
- begin
- if i<>(length(HexsKey) div 2)then
- MidS:=TmpStr;
- TmpStr:=''; //下面要用到TmpStr,所以要清空
- for j:=1 to(length(MidS) div 2)do
- begin
- a:=StrToInt('$'+MidS[2*j-1]+MidS[2*j]);
- b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);
- c:=a xor b;
- TmpStr := TmpStr+myStrToHex(Chr(c));
- end;
- end;
- Result:=myHexToStr(TmpStr);
- end;
现在已经可以使用了,调用EncryptStr和DecryptStr分别加密、解密
例:
- Edit1.Text:=EncryptStr('Hello','delphi');
-
- ////////////////////////////////////////
-
- Edit1.Text:=DecryptStr(Edit1.Text,'delphi');
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。