可以提供一個安全的文字加密解密的方法給我嗎? |
尚未結案
|
Marco-SUN
一般會員 發表:5 回覆:8 積分:2 註冊:2004-04-10 發送簡訊給我 |
|
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
安全不保證(加解密總能破解,只差在所需時間長短)
加密:
function EncodeStr(source,key:String):String; var l1,l2,p1,p2:integer; ch:byte; begin l1:=Length(source); p1:=1; l2:=Length(key); p2:=1; Result:=''; while p1<=l1 do begin ch:=(byte(source[p1])-1) xor byte(key[p2]); if ch=0 then ch:=not byte(key[p2]); Result:=Result CHAR(ch); inc(p1); if p2=l2 then p2:=1 else inc(p2); end; end;解密 function DecodeStr(source,key:String):String; var l1,l2,p1,p2:integer; ch:byte; begin l1:=Length(source); p1:=1; l2:=Length(key); p2:=1; Result:=''; while p1<=l1 do begin ch:=byte(source[p1]); if ch=(not byte(key[p2])) then ch:=byte(key[p2]) else ch:=ch xor byte(key[p2]); Result:=Result CHAR(ch 1); inc(p1); if p2=l2 then p2:=1 else inc(p2); end; end;使用範例: procedure TzfMain.bnTestClick(Sender: TObject); var mStr,mStr1,mStr2,mStr3:String; i:integer; begin key:='ajd92lkASH2edSAD'; mStr1:=''; for i:=1 to 255 do mStr1:=mStr1 CHAR(i); mStr2:=EncodeStr(mStr1,key); mStr3:=DecodeStr(mStr2,key); // if mStr1=mStr3 then mStr:='相同'#13 else mStr:='不相同'#13; for i:=1 to length(mStr1) do mStr:=mStr IntToHex(Byte(mStr1[i]),2); mStr:=mStr #13; for i:=1 to length(mStr2) do mStr:=mStr IntToHex(Byte(mStr2[i]),2); mStr:=mStr #13; for i:=1 to length(mStr3) do mStr:=mStr IntToHex(Byte(mStr3[i]),2); ShowMessage(mStr); end; |
change.jian
版主 發表:29 回覆:620 積分:439 註冊:2003-06-02 發送簡訊給我 |
|
Marco-SUN
一般會員 發表:5 回覆:8 積分:2 註冊:2004-04-10 發送簡訊給我 |
|
Brian77
中階會員 發表:8 回覆:114 積分:94 註冊:2002-05-17 發送簡訊給我 |
基本上加解密的重點不在於隱藏加解密演算法
而是隱藏加解密的 key
演算法可以完全公開, 只要對方猜不到 key 就沒用 (重點就要猜 key 所需的時間長短)
你想說的也許是指公開金鑰密碼系統. 加密和解密使用不同的 key (成對的key,一為公鑰,一為密鑰)
將公鑰公開給需要知道的人, 密鑰則自己妥善保存
要傳送密文時, 將明文以對接收方的公鑰加密, 則該密文僅其對稱的密鑰可以解密
公鑰和密鑰在產生以後, 要從公鑰推測出密鑰的內容是非常困難的
這種系統除了加密以外, 也有數位簽章的效果 (以私鑰加密, 若能以公鑰解出代表文字, 則表示金鑰成對, 身份確認)
PS. 若雙方要互傳密文的話, 就要各自擁有一對金鑰
PS. RSA 就是屬於這種密碼系統 發表人 - brian77 於 2004/04/14 12:42:19
|
Marco-SUN
一般會員 發表:5 回覆:8 積分:2 註冊:2004-04-10 發送簡訊給我 |
|
1w1
一般會員 發表:1 回覆:3 積分:0 註冊:2004-11-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |