delphi有現成的加密函式可以用嗎?還是要自己寫? |
答題得分者是:領航天使
|
c905165
中階會員 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
|
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 請問delphi中,有現成的加密/解密函式可以用嗎?而且可以自訂key的。 比如說: var ax: string; ax:= encrypt('這是原始的字串', key); bx:= decrypt(ax, key); 此時ax會等於bx。c905165 你好: 以下是我的建議~~不妨參考看看 ( >
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
c905165
中階會員 發表:50 回覆:120 積分:54 註冊:2002-09-29 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
這理有一個簡單的加密解密範例:
Call: Encrypted := Encrypt(InString,StartKey,MultKey,AddKey) Decrypted := Decrypt(InString,StartKey) Parameters: InString = long string (max 2 GB) that need to encrypt decrypt MultKey= MultKey key AddKey= Second key StartKey = Third key e-mail: djernaes@einstein.ot.dk web: einstein.ot.dk/~djernaes --------------------------------------------------- unit Crypt32; interface const StartKey = 981; {Start default key} MultKey = 12674; {Mult default key} AddKey = 35891; {Add default key} function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string; function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string; implementation {$R-} {$Q-} {******************************************************* * Standard Encryption algorithm - Copied from Borland * *******************************************************} function Encrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string; var I : Byte; begin Result := ''; for I := 1 to Length(InString) do begin Result := Result CHAR(Byte(InString[I]) xor (StartKey shr 8)); StartKey := (Byte(Result[I]) StartKey) * MultKey AddKey; end; end; {******************************************************* * Standard Decryption algorithm - Copied from Borland * *******************************************************} function Decrypt(const InString:string; StartKey,MultKey,AddKey:Integer): string; var I : Byte; begin Result := ''; for I := 1 to Length(InString) do begin Result := Result CHAR(Byte(InString[I]) xor (StartKey shr 8)); StartKey := (Byte(InString[I]) StartKey) * MultKey AddKey; end; end; {$R } {$Q } end.另外,站長忘了在那曾看過一種無法還原的加密演算法, 可否請網友指導一下,謝謝! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
hua2000
中階會員 發表:102 回覆:200 積分:65 註冊:2006-11-04 發送簡訊給我 |
站長大人,我用了一下上面的UNIT,發現出現了錯誤:
如下:
我的BUTTON中的代碼如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
edit2.Text:=encrypt(edit1.Text,38383,383838,383838);
edit3.Text:=decrypt(edit2.Text,38383,383838,383838);
end; 我它用作加密我的密碼的字符串時,也郵現了類似的錯誤! 還有沒有別的好用的UNIT呀,真是需要一個呀! 。。。。。。。。。。。
IMPROVE FOREVER
|
solnone
中階會員 發表:2 回覆:97 積分:69 註冊:2003-05-06 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
引言: 站長大人,我用了一下上面的UNIT,發現出現了錯誤: 我的BUTTON中的代碼如下: procedure TForm1.Button1Click(Sender: TObject); begin edit2.Text:=encrypt(edit1.Text,38383,383838,383838); edit3.Text:=decrypt(edit2.Text,38383,383838,383838); end; 我它用作加密我的密碼的字符串時,也郵現了類似的錯誤! 還有沒有別的好用的UNIT呀,真是需要一個呀!我找到您的問題了, 改為: procedure TForm1.Button1Click(Sender: TObject); var s:string; begin s:=Encrypt(edit1.text,38383,383838,383838); edit2.text:=s; edit3.text:=Decrypt(s,38383,383838,383838); end; 就可以了, 因為加密後的字串會變成亂碼, 您將這個字串傳給TEdit.text就會漏掉一個byte, 所以解密時就會出錯(少一碼)! ~~~Delphi K.Top討論區站長~~~
------
~~~Delphi K.Top討論區站長~~~ |
kuoyt
一般會員 發表:13 回覆:7 積分:4 註冊:2002-04-19 發送簡訊給我 |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |