2011-01-13 31 views
12

Tôi có một dự án mà tôi phải xử lý dữ liệu nhạy cảm. Bạn có biết cách mở biểu mẫu cơ sở dữ liệu keepass C# để sử dụng dữ liệu không?Lưu trữ thông tin nhạy cảm bên trong cơ sở dữ liệu lưu giữ từ C#

Tôi đã tải xuống các nguồn. Tôi sẽ xem xét nó te có được những gì tôi cần. bất kỳ ý tưởng nào khác?

+1

Bạn có thể thử viết lại điều này một chút rõ ràng hơn không? Bạn đang cố gắng thực hiện điều gì hoặc tránh? –

+0

Tôi đang cố gắng mở một cơ sở dữ liệu keepass từ một ứng dụng winform để sử dụng thông tin nhạy cảm mà không để chúng không được mã hóa. – hotips

+0

tôi đã không bao giờ được sử dụng cơ sở dữ liệu keepass .. nhưng tôi nghĩ rằng lưu trữ dữ liệu được mã hóa trong cơ sở dữ liệu MSSQL cũng an toàn ... và dễ thực hiện. Tuy nhiên, nếu bạn đang sử dụng giải pháp của bên thứ ba, họ phải có api để xử lý dữ liệu của họ .. –

Trả lời

29

Tôi nghĩ về đọc một cơ sở dữ liệu KeyPass 2 vì vậy tôi thêm một tham chiếu đến KeyPass.exe trong LINQPad và bắt đầu thử nghiệm. Trước sự ngạc nhiên của tôi và không có bất kỳ sự giúp đỡ nào bên ngoài (một minh chứng cho một API tốt), tôi đã đọc cơ sở dữ liệu chỉ sau vài phút. Đây là cách tôi đã làm điều đó:

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

Bạn đã bao gồm không gian tên nào? Tôi đang sử dụng C# trong SSIS và thêm tham chiếu đến KeePass.exe, sau đó bao gồm KeePassLib.Keys, KeePass.Collections, vv, nhưng nó không thích dòng db.RootGroup.GetEntries (true). – jared

+0

KeePassLib.Keys & KeePassLib.Serialization –

+0

** Gợi ý: ** Bạn có thể để LinqPad lưu trữ mật khẩu chủ trong mã trình diễn của bạn thông qua mục trình đơn ** Trình quản lý mật khẩu ** trong menu ** Tệp, sau đó truy xuất nó qua 'var masterpw = Util.GetPassword (" KeePassMaster ");' như mô tả [ở đây] (http://stackoverflow.com/a/12006038/1016343) chi tiết hơn. Bằng cách này, nó đang được lưu trữ bằng cách sử dụng CryptoAPI và bạn có thể an toàn cho đi mã demo mà không cần phải chăm sóc về việc loại bỏ mật khẩu. – Matt

Các vấn đề liên quan