2012-08-30 68 views
15

我正在使用SQLite數據庫版本3與C#Windows應用程序.. 我想加密SQLite數據庫文件使用密碼或任何其他加密方式,以防止客戶端從程序文件文件夾中打開它。我可以用密碼加密SQLite數據庫嗎?

我不希望任何運行方式的加密,我只是想使數據庫文件顯示密碼字段當客戶端嘗試從程序文件打開它..感謝

編輯

如果我從代碼加密它,客戶端可以打開它,當安裝完成和db文件傳輸到程序文件之前打開程序來執行加密不是嗎?

+0

可能的重複:http://stackoverflow.com/questions/1381264/password-protect-a-sqlite-db-is-it-possible –

+1

我認爲哈桑正在尋找一種非運行時加密。 –

回答

22

我使用SQLite 3個作品完美! 你要做的是:

//if the database has already password 
try{ 
      string conn = @"Data Source=database.s3db;Password=Mypass;"; 
      SQLiteConnection connection= new SQLiteConnection(conn); 
      connection.Open(); 
      //Some code 
      connection.ChangePassword("Mypass"); 
      connection.Close(); 
    } 
//if it is the first time sets the password in the database 
catch 
    { 
      string conn = @"Data Source=database.s3db;"; 
      SQLiteConnection connection= new SQLiteConnection(conn); 
      connection.Open(); 
      //Some code 
      connection.ChangePassword("Mypass"); 
      connection.Close(); 
    } 

此後如果用戶試圖打開數據庫。會說管理員保護或數據庫被加密或不是數據庫或損壞的文件!

+0

如果我將這些代碼應用於某些sqlite數據庫並獲得加密,那麼如果我想手動編輯數據庫中的某個表,我的意思是有沒有解密的方法?我需要爲此編寫什麼代碼? – Mogli

+0

我認爲沒有其他方式只是代碼。你可以做的是使這個代碼獨立的應用程序把密碼爲空,並要求舊密碼來訪問它 –

+0

我用這個con.Open(); con.ChangePassword(「Mypass」); con.Close();現在它已被加密,現在我想手動更改它並希望打開它,我應該怎麼做? – Mogli

1

不幸的是,SQlite文件中的密碼只能從代碼中添加,刪除或更改。爲此,您需要System.Data.SQLite命名空間,它將爲您提供方法以及適配器和連接。

+0

感謝您的關注,但是如果我是從代碼中完成的,客戶端可以在安裝完成並將_db_文件傳輸到程序文件時打開它嗎? – Hassanation

+0

作爲加密代碼將不會被應用,直到程序運行 – Hassanation

2

在此forum發現的職位表明..

Standard SQLite3 API doesn't offer any form of protection and relies only on underlying OS privileges mecanism (if any) for "security". If you have an existing SQLite-style database which uses a specific API to gain access, then you should use this particular (non-standard) API.

如果你能/想使用某種擴展名的SQLite,你也可以嘗試SQLite Encryption Extension (SEE)SQLite Crypt

,但你可以使用SQLite.Data更改/設置數據庫的密碼,如this article所示。

+0

如果我使用它的某種擴展,連接將工作得很好,因爲它與相同的擴展? – Hassanation

+0

你的意思是如果你使用一些擴展來加密,如果它仍然有可能在c#中創建並打開這個db的連接? –

+0

是正是我的意思:) – Hassanation

0

嘗試sqlitestudio.pl作爲編輯器。
對於數據庫類型,在連接時選擇System.Data.SQLite