線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:3607
推到 Plurk!
推到 Facebook!

可以提供一個安全的文字加密解密的方法給我嗎?

尚未結案
Marco-SUN
一般會員


發表:5
回覆:8
積分:2
註冊:2004-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-11 18:47:04 IP:202.175.xxx.xxx 未訂閱
可以提供一個安全的文字加密解密的方法給我嗎? 我所需的是中英文的加密解密方法。 先謝大家﹗
Brian77
中階會員


發表:8
回覆:114
積分:94
註冊:2002-05-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-12 10:36:36 IP:61.61.xxx.xxx 未訂閱
安全不保證(加解密總能破解,只差在所需時間長短) 加密:
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-13 09:23:37 IP:61.222.xxx.xxx 未訂閱
參考這裡: http://delphi.ktop.com.tw/topic.php?topic_id=28295
Marco-SUN
一般會員


發表:5
回覆:8
積分:2
註冊:2004-04-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-14 11:24:44 IP:202.175.xxx.xxx 未訂閱
聽說外國有一種加密的方式,就算打這個方式加密公開也無法破解的,我想知這個加密的方式原理。
Brian77
中階會員


發表:8
回覆:114
積分:94
註冊:2002-05-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-14 12:39:27 IP:61.61.xxx.xxx 未訂閱
基本上加解密的重點不在於隱藏加解密演算法 而是隱藏加解密的 key 演算法可以完全公開, 只要對方猜不到 key 就沒用 (重點就要猜 key 所需的時間長短) 你想說的也許是指公開金鑰密碼系統. 加密和解密使用不同的 key (成對的key,一為公鑰,一為密鑰) 將公鑰公開給需要知道的人, 密鑰則自己妥善保存 要傳送密文時, 將明文以對接收方的公鑰加密, 則該密文僅其對稱的密鑰可以解密 公鑰和密鑰在產生以後, 要從公鑰推測出密鑰的內容是非常困難的 這種系統除了加密以外, 也有數位簽章的效果 (以私鑰加密, 若能以公鑰解出代表文字, 則表示金鑰成對, 身份確認) PS. 若雙方要互傳密文的話, 就要各自擁有一對金鑰 PS. RSA 就是屬於這種密碼系統 發表人 - brian77 於 2004/04/14 12:42:19
Marco-SUN
一般會員


發表:5
回覆:8
積分:2
註冊:2004-04-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-14 18:17:57 IP:202.175.xxx.xxx 未訂閱
原來是這樣的﹗ 這段文字我在書中也閱讀過,原來書中已回答了我的問題,可是我沒有深入回想考究,謝謝﹗
1w1
一般會員


發表:1
回覆:3
積分:0
註冊:2004-11-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-17 17:44:11 IP:211.76.xxx.xxx 未訂閱
能否程式碼後面加個註解呢?
系統時間:2017-12-17 6:33:55
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!