2011-01-13 14 views
12

Ho un progetto in cui devo gestire i dati sensibili. Sai come aprire un modulo del database Keepass C# per usare i dati?Memorizza le informazioni sensibili nel database Keepass da C#

Ho scaricato i sorgenti. Cercherò di ottenere ciò di cui ho bisogno. qualche altra idea?

+1

Puoi provare a riscriverlo un po 'più chiaramente? Cosa stai cercando di realizzare o evitare? –

+0

Sto provando ad aprire un database Keepass da un'applicazione winform per utilizzare le informazioni sensibili senza lasciarle crittografate. – hotips

+0

Non ho mai usato il database di conservazione ... ma penso che memorizzare i dati crittografati nei database MSSQL sia anche sicuro ... e facile da implementare. Tuttavia, se si utilizza una soluzione di terze parti, è necessario disporre di un'API per gestire i propri dati. –

risposta

29

ho pensato di leggere un database KeyPass 2 così ho aggiunto un riferimento a KeyPass.exe in LINQPad e ha iniziato a sperimentare. Con mia sorpresa e senza alcun aiuto esterno (una testimonianza di una buona API), stavo leggendo il database dopo solo pochi minuti. Ecco come l'ho fatto:

var dbpath = @"C:\path\to\passwords.kdbx"; 
var masterpw = "[email protected]"; 

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") 

       };                     

kpdata.Dump(); // this is how Linqpad outputs stuff 
db.Close(); 
+0

Quali spazi dei nomi dovevi includere? Sto usando C# in SSIS e aggiunto il riferimento a KeePass.exe, quindi includo KeePassLib.Keys, KeePass.Collections, ecc., Ma non mi piace la linea db.RootGroup.GetEntries (true). – jared

+0

KeePassLib.Keys e KeePassLib.Serialization –

+0

** Suggerimento: ** Puoi consentire a LinqPad di memorizzare la password principale nel codice demo tramite la voce di menu ** Password manager ** nel menu ** File **, quindi recuperarla tramite 'var masterpw = Util.GetPassword (" KeePassMaster ");' come descritto [qui] (http://stackoverflow.com/a/12006038/1016343) in modo più dettagliato. In questo modo, viene memorizzato utilizzando CryptoAPI e puoi tranquillamente distribuire il codice demo senza doversi preoccupare della rimozione della password. – Matt

Problemi correlati