日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DELPHI加密字串(异或运算加密)

發(fā)布時(shí)間:2025/3/17 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DELPHI加密字串(异或运算加密) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
首先有兩個(gè)自定的轉(zhuǎn)換函數(shù): function myStrToHex(s:string):string; //字串轉(zhuǎn)16進(jìn)制 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進(jìn)制轉(zhuǎn)字串 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; function myStrToHex(s:string):string; //字串轉(zhuǎn)16進(jìn)制 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進(jìn)制轉(zhuǎn)字串 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; 然后就是加密、解密函數(shù)了: {兩個(gè)函數(shù)的參數(shù)相同,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('密文錯(cuò)誤!'); 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; {兩個(gè)函數(shù)的參數(shù)相同,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('密文錯(cuò)誤!'); 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; 現(xiàn)在已經(jīng)可以使用了,調(diào)用EncryptStr和DecryptStr分別加密、解密 例: [delphi] view plaincopyprint?Edit1.Text:=EncryptStr('Hello','delphi'); Edit1.Text:=DecryptStr(Edit1.Text,'delphi'); Edit1.Text:=EncryptStr('Hello','delphi'); Edit1.Text:=DecryptStr(Edit1.Text,'delphi');

  

轉(zhuǎn)載于:https://www.cnblogs.com/qingsong/p/4033027.html

總結(jié)

以上是生活随笔為你收集整理的DELPHI加密字串(异或运算加密)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。