Domanda

che sto sviluppando un'applicazione che ha bisogno di segreti memorizzazione in un database.

Ho bisogno di una base di dati portatile (come Firebird, SQLite, ecc) in cui i dati saranno memorizzati criptati o protetti da password o entrambe ...

Diamo come ad esempio che voglio creare un gestore di password. ho bisogno di negozio che le password in un database. Sono abituato a usare Embed Firebird, ma non per i dati segreti.

Un'altra soluzione è quella di utilizzare il database in modo naturale e crittografare il file di database quando non sono connesso a file, ma non sono sicuro delle implicazioni per la sicurezza o le prestazioni.

Quello che il metodo migliore che si consiglia?

È stato utile?

Soluzione

C'è un progetto chiamato sqlite-crypt . Quale dovrebbe essere la soluzione migliore. sqlite db con tutti i dati sul disco criptato.

Altri suggerimenti

Si potrebbe anche avere uno sguardo a edizione di SQL Server Compact, che richiede solo una DLL e memorizzerà i dati in un unico file, proprio come SQLite o Access, Firebird, ecc.

Essa ha anche funzionalità di crittografia built-in.

Alcune referenze:

crittografia password

Vedere la mia risposta alla tua altra domanda sistema operativo in modo .

Onestamente? Utilizzare TrueCrypt o KeePass .

Sono d'accordo con CJM, ma se sei morto-set sulla scrittura proprio, si dovrebbe crittografare il flusso al write-tempo e la decodifica in lettura tempo. Qualsiasi algoritmo pubblicato che è un po 'forte dovrebbe mantenere le cose sicure.

di REALbasic supporto integrato per lavorare con i database SQLite crittografati ha funzionato bene per me su un paio di progetti.

mi raccomando di controllare SQLCipher (full-disclosure, io sono uno di gli sviluppatori!) è un'implementazione libera e open-source di, crittografia trasparente a livello di pagina per SQLite. L'implementazione è abbastanza robusto, è in fase di sviluppo attivo, ed è molto facile da usare (relativamente parlando).

I secondi il suggerimento di utilizzare KeePass. E 'un grande archivio per i dati sensibili ed espone una buona API. Ecco un esempio di come leggere un database standard keypass 2:

var dbpath = @"C:\path\to\passwords.kdbx";
var masterpw = "Your$uper$tr0ngMst3rP@ssw0rd";

var ioConnInfo = new IOConnectionInfo { Path = dbpath };
var compKey = new CompositeKey();
compKey.AddUserKey(new KcpPassword(masterpw));

var db = new KeePassLib.PwDatabase();
db.Open(ioConnInfo, compKey, null);

var kpdata = from entry in db.RootGroup.GetEntries(true)
                select new
                {
                    Group = entry.ParentGroup.Name,
                    Title = entry.Strings.ReadSafe("Title"),
                    Username = entry.Strings.ReadSafe("UserName"),
                    Password = entry.Strings.ReadSafe("Password"),
                    URL = entry.Strings.ReadSafe("URL"),
                    Notes = entry.Strings.ReadSafe("Notes")

                };                                      
db.Close();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top