Jakie jest najlepsze podejście do szyfrowania pliku bazy danych SQLite w .Net/C#? Używam otoki sqlite-dotnet2.Szyfrowanie bazy danych SQLite w C#
Istnieją narzędzia, takie jak SQLite Encryption Extension i SQLite Crypt, ale oba są niewiążące, podczas gdy mój projekt jest na licencji GPL.
To naiwne podejście, które myślałem o użyciu, pozwoliło SQLite obsłużyć plik tymczasowy, a następnie zaszyfrować go przy wyjściu programu i nadpisać (wyzerować) oryginał. Oczywistą wadą jest to, że jeśli program ulega awarii (i jest uruchomiony), dostępny jest zwykły tekstowy DB.
Czy istnieje lepszy sposób podejścia do tego? Czy mogę przekazać zaszyfrowany strumień do opakowania (zamiast używać SQLiteConnection.CreateFile)?
[edytuj] Może to przesadzam. Czy wystarczy użyć opcji Hasło w ciągu połączenia? Czy plik byłby w tym przypadku poprawnie zaszyfrowany (czy też jest to słabsza ochrona)?
> Są narzędzia takie jak SQLite Encryption Extension i SQLite Crypt, ale oba są niewolne, podczas gdy mój projekt jest na licencji GPL. Jeszcze nie próbowaliśmy używać go z .NET, ale pracuję w zespole programistycznym dla [SQLCipher] [1], który jest w zasadzie bezpłatną i nieobciążoną wersją SQLite, która zapewnia przezroczyste szyfrowanie bazy danych. Polecam go do użytku w ustawieniach aplikacji mobilnych i/lub autonomicznych, gdzie pożądany jest wbudowany db. [1]:.? Http://github.com/sjlombardo/sqlcipher –
... i .NET wersja SQLCipher jest teraz produktem handlowym :( – Cocowalla