請問如何對SQL欄位作加密的動作 |
尚未結案
|
andy1119
一般會員 發表:32 回覆:35 積分:13 註冊:2003-11-09 發送簡訊給我 |
|
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: 想請問各位大大 若有一欄位是記錄使用者的密碼 那請問要如何作到加密的功能呢? 因為我有看過有人作過的系統 密碼欄位會出現亂碼 請問要如何作?andy1119 你好 把相對的dbEdit.PasswordChar設為任一字元(一般設為'*'),之後在其內輸入的資料即會顥示'****..'了 如果還有dbGrid的資料顯示,則請把密碼欄位的Visiable設為False; DataSet.FieldByName('Password').Visiable := False; 這樣才不會在dbGrid中顯示出來。 |
ticky
初階會員 發表:35 回覆:69 積分:25 註冊:2002-11-12 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
您好:
加密
function Encrypt(S: String): String; var i,j,k1,k2: integer; cSum,nSum: integer; sTmp: String[8]; begin Result := Space(8) '??'; //檢查密碼是否合法. S := TrimRight(S); if Length(S) < 5 then begin ShowMsg('密碼長度最少必須5位'); Exit; end; if Length(S) > 8 then begin ShowMsg('密碼長度超過8位'); Exit; end; cSum := 0; nSum := 0; for i := 1 to Length(S) do begin if not (S[i] in ['A'..'Z','a'..'z','0'..'9']) then begin ShowMsg('密碼含有不合法字元'); Exit; end; if S[i] in ['A'..'Z','a'..'z'] then Inc(cSum); if S[i] in ['0'..'9'] then Inc(nSum); end; if cSum < 3 then begin ShowMsg('密碼最少必須含3位字母'); Exit; end; if nSum < 2 then begin ShowMsg('密碼最少必須含2位數字'); Exit; end; //加密. Randomize; while True do begin k1 := Random(30); k2 := Random(30); sTmp := PadR(S,8); Result := ''; for i := 1 to 8 do begin j := k1 Mod 30 i; j := (k2 j) Mod 30 1; Result := Result Chr(Ord(sTmp[i]) xor j) end; if (Pos('"',Result)>0) or (Pos('''',Result)>0) then Else Break; end; Result := Result Chr(k1 40) Chr(k2 60); end; function Decrypt(S: String): String; var i,j: integer; Key1,Key2: integer; begin Result := '??' Space(6); //檢查密碼是否正確. if Length(S) <> 10 then Exit; //解密 Key1 := Ord(S[9])-40; Key2 := Ord(S[10])-60; Result := ''; for i := 1 to 8 do begin j := Key1 Mod 30 i; j := (Key2 j) Mod 30 1; Result := Result Chr(Ord(S[i]) xor j) end; Result := Trim(Result); end;~~應無所住而生其心~~ |
andy1119
一般會員 發表:32 回覆:35 積分:13 註冊:2003-11-09 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |