2013-02-16 90 views
0

我想在Windows Phone上使用csharp-sqlite使用SQLite。我有一個現有的加密數據庫,需要傳入密碼,但傳遞字符串時不起作用。我發現this thread,但它說我需要傳遞一個32字節的十六進制密鑰,但我如何將現有的字符串轉換爲34字節的十六進制密鑰?編碼字符串爲34字節十六進制SQLite密碼

感謝

至於問意見,這裏是目前的代碼,如果數據庫未加密的正常工作與數據庫和我刪除了「密碼」的一部分。一旦它被加密,就會出現一個錯誤(比如表X不存在,即使它在沒有加密的情況下也是如此),我想我已經將它調試到了庫我使用似乎無法接受字符串密碼,並需要一個十六進制密鑰。

using (var conn = new SqliteConnection("data source=file:db.db3,Password=mypwd")) 
{ 
} 

我試過連接字符串的各種組合,包括添加版本= 3和使用分號而不是逗號。

+1

SQLite不接受密碼,所以推測你的意思是SqlCipher。如果你給SqlCipher一個不是32個十六進制字節的密碼,它將把它分散到適當的32字節密鑰中。 – 2013-02-16 04:56:14

+0

謝謝,這似乎是正確的,但我如何使用SqlCipher?我創建了它的一個新實例,但不知道我輸入現有字符串的位置。 – NewCode 2013-02-16 05:07:25

+0

發佈你的當前代碼? – 2013-02-16 08:02:16

回答

0

我沒有用過SqlCipher但sample code on their website不使用集成到連接字符串密碼,但事後在連接上設置:

conn.ConnectionString = "Data Source=sqlcipher.db;Pooling=false;"; 
((SQLiteConnection)conn).SetPassword("secret"); 
conn.Open(); 

如果通過連接字符串指定的密碼是可能的,你可能需要嘗試使用分號而不是逗號來分隔值。

+0

* SQLite沒有內置加密*除了開源的SqlCipher之外,還有一個專有的[SQLite Encryption Extension](http://www.hwaci.com/sw/sqlite/see.html) ),我想這可能是你正在使用的。 – 2013-02-16 18:20:26

+0

對不起,我已經將PC上的System.Data.SQLite庫用作包裝。我無法改變它,因爲這是我一直要求在PC版上使用的。我使用這裏顯示的方法加密http://sqlite.phxsoftware.com/forums/t/130.aspx – NewCode 2013-02-16 18:50:21

+0

@NewCode抱歉,我最初並不明白。鏈接中的示例也使用分號來分割ConnectionString部分。 – 2013-02-16 19:38:33

相關問題