我正在使用SQLite數據庫版本3與C#Windows應用程序.. 我想加密SQLite數據庫文件使用密碼或任何其他加密方式,以防止客戶端從程序文件文件夾中打開它。我可以用密碼加密SQLite數據庫嗎?
我不希望任何運行方式的加密,我只是想使數據庫文件顯示密碼字段當客戶端嘗試從程序文件打開它..感謝
編輯
如果我從代碼加密它,客戶端可以打開它,當安裝完成和db文件傳輸到程序文件之前打開程序來執行加密不是嗎?
我正在使用SQLite數據庫版本3與C#Windows應用程序.. 我想加密SQLite數據庫文件使用密碼或任何其他加密方式,以防止客戶端從程序文件文件夾中打開它。我可以用密碼加密SQLite數據庫嗎?
我不希望任何運行方式的加密,我只是想使數據庫文件顯示密碼字段當客戶端嘗試從程序文件打開它..感謝
編輯
如果我從代碼加密它,客戶端可以打開它,當安裝完成和db文件傳輸到程序文件之前打開程序來執行加密不是嗎?
我使用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();
}
此後如果用戶試圖打開數據庫。會說管理員保護或數據庫被加密或不是數據庫或損壞的文件!
不幸的是,SQlite文件中的密碼只能從代碼中添加,刪除或更改。爲此,您需要System.Data.SQLite
命名空間,它將爲您提供方法以及適配器和連接。
感謝您的關注,但是如果我是從代碼中完成的,客戶端可以在安裝完成並將_db_文件傳輸到程序文件時打開它嗎? – Hassanation
作爲加密代碼將不會被應用,直到程序運行 – Hassanation
在此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所示。
如果我使用它的某種擴展,連接將工作得很好,因爲它與相同的擴展? – Hassanation
你的意思是如果你使用一些擴展來加密,如果它仍然有可能在c#中創建並打開這個db的連接? –
是正是我的意思:) – Hassanation
您可以使用內置加密的sq-lite
.net提供程序(System.Data.SQLite)。 試試這個:
http://sqlite.phxsoftware.com/forums/t/130.aspxenter link description here
或使用:
嘗試sqlitestudio.pl
作爲編輯器。
對於數據庫類型,在連接時選擇System.Data.SQLite
。
可能的重複:http://stackoverflow.com/questions/1381264/password-protect-a-sqlite-db-is-it-possible –
我認爲哈桑正在尋找一種非運行時加密。 –