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

如何在資料庫裡的資料加密?

尚未結案
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-03 15:49:36 IP:163.28.xxx.xxx 未訂閱
我想連一個資料庫(access),之後在資料庫裡的東西變成加密,而我已經會連線了,成功了 adotable1.ConnectionString:='provider=microsoft.jet.oledb.4.0;data source=d:\資料庫\abc.mdb;persist security info=false'; adotable1.TableName:='illness'; adotable1.Active:=true; 而在加密上我也使用了 const c1=52845; c2=11719; function decrypt(const s:string;key:word):string; var i:byte; begin setlength(result,length(s)); for i:=1 to length(s) do begin result[i]:=char(byte(s[i])xor (key shr 8)); key:=(byte(s[i])+key)*c1+c2; end; end; 在來就是如何在button上使用上面的decrypt function,可以使用access資料庫裡的東西可以加密呢???各位幫幫忙,老師又出難題了 < >< >
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-03 17:09:25 IP:210.64.xxx.xxx 未訂閱
如果你要將所有的欄位的資料都加密,可以用 for i := 0 to adotable1.fieldcount-1 do begin adotable1.field[i].value := decrypt(adotable1.field[i].value,8); end; 寫在adotable1的beofrepost 或是 存檔的按鈕按下去之後,另外,你也必須要寫一個解密的函數,在資料取出的時候,將加密的資料還原!! Pillar Wang
------
Pillar Wang
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-03 17:37:24 IP:163.28.xxx.xxx 未訂閱
請問一下i是宣告什麼的?因為我宣告成byte的話,會變成adotable1.field[i].value := decrypt(adotable1.field[i].value,8);這行的field有錯,如果是宣告成string的話,就變成for i := 0 to adotable1.fieldcount-1 do 的i有錯???不好意思,因為我是學生,是新手
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-03 17:39:45 IP:210.64.xxx.xxx 未訂閱
你好 var i : integer;    在for 迴圈裡面的變數就是用 integer整數的型態喔!!
------
Pillar Wang
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-03 17:53:28 IP:163.28.xxx.xxx 未訂閱
不行耶,出現什麼dataset not in edit or insert mode的字,
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-03 17:55:26 IP:163.28.xxx.xxx 未訂閱
procedure TForm1.Button3Click(Sender: TObject); var i:integer; begin for i := 0 to adotable1.fieldcount-1 do adotable1.Fields[i].value := decrypt(adotable1.fields[i].value,8); end; procedure TForm1.Button4Click(Sender: TObject); //var i:integer; begin //for i := 0 to adotable1.fieldcount-1 do //adotable1.Fields[i].value := encrypt(adotable1.fields[i].value,8); end;哪有錯呢???請大師指點
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-03 17:56:20 IP:163.28.xxx.xxx 未訂閱
procedure TForm1.Button3Click(Sender: TObject); var i:integer; begin for i := 0 to adotable1.fieldcount-1 do adotable1.Fields[i].value := decrypt(adotable1.fields[i].value,8); end; procedure TForm1.Button4Click(Sender: TObject); //var i:integer; begin //for i := 0 to adotable1.fieldcount-1 do //adotable1.Fields[i].value := encrypt(adotable1.fields[i].value,8); end;哪有錯呢???請大師指點
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-03 18:08:40 IP:210.64.xxx.xxx 未訂閱
會不會是你寫的點錯了!!因為你要在edit或是insert的狀態下,要存到資料庫之前才做這一段處理啊!!所以可以寫在query的beofrepost事件裡面啊!! Pillar Wang
------
Pillar Wang
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-03 18:10:34 IP:210.64.xxx.xxx 未訂閱
對了paa 你的問題是屬於資料庫的,在ktop裡面有一區是專門討論delphi有關資料庫問題的,以後要記得將問題發表在那一個討論區裡面喔!! Pillar Wang
------
Pillar Wang
pillar62
資深會員


發表:9
回覆:324
積分:271
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-03 18:12:05 IP:210.64.xxx.xxx 未訂閱
sorry 我看錯了!!以為這邊不是資料庫的討論區!!不好意思!!
------
Pillar Wang
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-03-03 18:28:35 IP:163.28.xxx.xxx 未訂閱
沒關係,不過還是要謝謝你。
jeff377
初階會員


發表:9
回覆:60
積分:33
註冊:2004-08-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-03-04 11:37:04 IP:61.66.xxx.xxx 未訂閱
引言: 不行耶,出現什麼dataset not in edit or insert mode的字,
DataSet要作資料異動前,要先設定為編輯狀態,可以使用下列函數
procedure DataSetEdit(DataSet: TDataSet);
//意義: DataSet編輯
//參數: DataSet[in]-作用的DataSet
begin
  if not(DataSet.State in [dsEdit]) then DataSet.Edit;
end;
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-03-09 17:36:03 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin   if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式可以看看嗎?
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-03-09 17:36:50 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin   if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式可以看看嗎?
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-03-09 17:38:04 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin   if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式可以看看嗎?
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-03-09 17:38:57 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式給你看看嗎?不好意思我是新手。
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-03-09 17:39:51 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式給你看看嗎?不好意思我是新手。
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-03-09 17:40:28 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式給你看看嗎?不好意思我是新手。
paa
初階會員


發表:50
回覆:101
積分:30
註冊:2005-02-01

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-03-09 17:40:59 IP:163.28.xxx.xxx 未訂閱
procedure DataSetEdit(DataSet: TDataSet); //意義: DataSet編輯 //參數: DataSet[in]-作用的DataSet begin if not(DataSet.State in [dsEdit]) then DataSet.Edit; end; 這函數我加了,可是還是有錯耶,可以傳程式給你看看嗎?不好意思我是新手。
系統時間:2024-06-26 22:21:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!