2011-01-13 17 views
12

Hassas verileri işlemek zorunda olduğum bir projem var. Verileri kullanmak için bir keepass veritabanı formu C# nasıl açılır biliyor musunuz?Keepass veritabanında hassas bilgileri c'den saklayın. #

Kaynakları indirdim. İhtiyacım olanı alacağım. başka bir fikrin var mı? Bir KeePass-2.05- yoktur

KeePass Password Safe

Aksine C# System.Cryptography sınıfları kullanabilir ve size veritabanı veya txt dosyasında enrypted veri depolamak (nasıl keepass işler için) ...:

+1

Bunu biraz daha açık bir şekilde yeniden yazmayı deneyebilir misiniz? Neyi başarmaya veya kaçınmaya çalışıyorsunuz? –

+0

Ben bir şifreli bırakılmadan hassas bilgileri kullanmak için bir winform uygulamasından bir keepass veritabanı açmaya çalışıyorum. – hotips

+0

Keepass veritabanını hiç kullanmadım .. ama MSSQL Veritabanlarındaki şifrelenmiş verilerin saklanması da güvenli ... ve uygulanması kolay. Ancak üçüncü taraf bir çözüm kullanıyorsanız, verilerinin üstesinden gelmek için bir api olmalıdır .. –

cevap

29

Ben bu yüzden LINQPad içinde KeyPass.exe bir başvuru eklendi ve denemeye başladı bir KeyPass 2 veritabanını okuma düşündüm. Sürprizime ve dışarıdan yardım almadan (iyi bir API'nin kanıtı), veri tabanını sadece birkaç dakika sonra okudum. İşte ben bunu yaptım:

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

Hangi ad alanlarını dahil ettiniz? SSIS'de C# kullanıyorum ve KeePass.exe dosyasına referans ekledim, ardından KeePassLib.Keys, KeePass.Collections, vs.'yi ekleyin, ancak db.RootGroup.GetEntries (true) satırını sevmiyor. – jared

+0

KeePassLib.Keys & KeePassLib.Serialization –

+0

** İpucu: ** LinqPad'in ana şifreyi demo kodunuzda ** Dosya ** menüsündeki ** Password manager ** menü öğesi üzerinden saklamasına izin verebilir ve daha sonra var masterpw = Util.GetPassword ("KeePassMaster"); 'daha ayrıntılı olarak [burada] (http://stackoverflow.com/a/12006038/1016343) açıklandığı gibi. Bu şekilde, CryptoAPI kullanılarak saklanmakta ve şifreyi kaldırmaya özen göstermeden demo kodunu güvenle verebilirsiniz. – Matt

İlgili konular