2013-04-23 101 views
1

我的桌面Java應用程序使用幾個只讀的SQLite數據庫,我寧願人們無法打開和看看。通常情況下,這可能是通過加密完成的,但我目前使用的是sqlite4java庫,它不支持加密,並且不容易使用其他SQLite加密庫(例如SEE)。替代SQLite數據庫加密

我想要做的就是儘可能它作爲困難的「休閒黑客」只是覺得這些數據庫文件中的一個,並打開它們。例如,有人拋出了將它們粘貼在受密碼保護的ZIP文件中的想法,然後使用類似於建議here的庫來將其解密爲InputStream或臨時文件。

這是值得做的事嗎?

編輯:我知道這不會是完全安全的,並致力於足夠黑客也許能仍然找到並解密(這似乎是任何此類程序的漏洞)。

+0

http://stackoverflow.com/a/5877130/1296660 – Supericy 2013-04-23 04:23:40

+0

程序從哪裏獲取密碼?它是否與數據庫一起發運? – Thilo 2013-04-23 04:23:56

+0

數據庫有多大?你可以將它們完全加載到內存中嗎? – Thilo 2013-04-23 04:25:31

回答

3

「我想要做的就是儘可能它很難。」

您可能只是儘量讓自己的難度爲

普通用戶不打開應用程序二進制文件。打開應用程序二進制文件的用戶可以使用工具來查找加密密鑰。

如果你想從事通過隱藏的安全性,只是名稱數據庫文件「公地IO-3.2.1.jar」,而不是「mydb.sqlite3」。對你沒有任何麻煩,仍然拋棄了「隨意的黑客」。

+0

不確定你的意思是用戶沒有打開APK。經過身份驗證的公鑰的重點在於它可以防止人們打開文件。 – Thunderforge 2013-04-23 05:06:07

+0

對不起,我認爲我們在談論Android套件(APK)。用EXE或JAR替換,或者您運送程序。 – Thilo 2013-04-23 05:07:57

+0

對,我意識到我無法阻止某人打開應用程序二進制文件。我希望有一些比重命名文件更安全的東西。將它捆綁到一個EXE中可以滿足這個要求,但這似乎是一個難以管理的問題。 – Thunderforge 2013-04-23 05:10:10

0

相反密碼保護您的SQLite數據庫,你可以選擇不與應用APK出貨,而下載第一次運行的內容,這樣你就不必加密和解密和您的APK較輕。

還記得,你的數據庫仍然可以被黑客攻擊。

+0

恐怕不能選擇下載數據庫(用戶可能沒有互聯網連接),這將用於桌面應用程序,而不是電話(至少現在)。另外,我更關心有人在電腦上打開文件。 – Thunderforge 2013-04-23 04:36:33

+1

此外,人們可以反編譯Java,看看你做了什麼以及你做了什麼,所以不要依賴默默無聞的安全性。 – 2013-04-23 04:48:21

+0

如果只是在sqlite3命令中打開數據庫文件並查看它,是否需要花費更多的精力來反編譯我的java代碼並搜索關鍵字? – Thunderforge 2013-04-23 04:49:32