一種基於 Firebird 資料庫加密資料項的方法

2021-06-09 21:38:21 字數 1833 閱讀 8615

1.1    加密方案

1.1.1      開發udf加解密函式庫

用c\vc\delphi等語言開發使用者自定義函式庫。

調研基於win32平台,採用vc++2005開發加解密動態庫。

函式申明示例:

extern

"c"__declspec(dllexport) char * __cdecl

reversestring(char *psrc); 

注:(1).    1.1.2和1.1.3節均針對某個firebird資料庫所做的操作,必須先要connect已存在的資料庫成功。

(2).    1.1.2和1.1.3節中的示例通過firebirdisql tool工具編寫。

1.1.2      宣告udf函式

要想在資料庫中使用udf函式庫中的函式,必須在資料庫中進行函式的宣告。 

宣告命令:

declare external function 

語法如下:

declare external function '名稱'

傳入的變數型態列表

returns 回傳變數型態 free_it(釋放函式實現中分配的記憶體)

entry_point '函式名稱' '模組名稱'; 

示例:

注:free_it不是必須,只有在函式的實現中分配了記憶體時,才需新增到語句中。

1.1.3      建立觸發器

在firebird資料庫端利用觸發器機制來實現資料新增、修改後的自動加密,可以避免系統在開發過程中對資料加密操作的附加編碼工作,降低系統開發的複雜性。 

建立觸發器語法:

create trigger nameas

begin

end 

參考**:

示例:

注:(1).    語句set term ^;的作用;

(2).    觸發器若生效,需斷開資料庫連線。 

1.1.4      資料加密測試

在資料庫中,由於已建立了資料加密的觸發器,所以測試資料的新增修改非常簡單,與正常的資料新增修改完全一樣,可以通過sql語句進行操作。 

建立觸發器之前執行insert操作後查詢的資料截圖:

建立觸發器之後執行insert操作後查詢的資料截圖:

1.1.5      資料解密

查詢資料時,只需使用udf解密函式對查詢的加密字段進行解密操作即可。

本測試用例中使用同乙個函式reversestr將字串逆序,查詢結果截圖如下:

1.2.1      不足之處

(1).    若對其他表字段加密,需重新建立觸發器;

(2).    若對錶中所有字段加密,則會存在效率問題。

1.2.2      應對之策

(1).     只對資料庫表中的核心字段加密

可選擇通過本方案,或者對需要加密的字段在程式中先行加密,再存庫(設計思路上,本方案較優,但需比較批量操作時兩種實現方案的訪問效率)。

一種基於EEPROM儲存結構的微型資料庫

dbs database 是一種基於eeprom儲存結構的微型資料庫,此資料庫的設計目的是解決資料儲存過程中發生異常而導致系統發生嚴重錯誤。使用乙個結構體陣列資料結構實現資料儲存 資料管理 資料應用。1.構建資料庫 2.初始化兩段位址,將資料迴圈逐個寫入資料庫 3.a段資料自校驗,b段資料校驗 當a...

unidac連線FireBird資料庫

with condb do tuniconnection begin providername interbase 這裡確定為interbase 但是可以支援firebird password masterkey 資料庫密碼 username sysdba 資料庫密碼 server database...

unidac連線FireBird資料庫

dbconn tuniconnection with dbconn do begin if not connected then begin providername interbase 這裡確定為interbase 但是可以支援firebird username sysdba 資料庫密碼 pass...