2011-01-13 10 views
12

私は機密データを処理する必要があるプロジェクトを持っています。 keepassデータベースフォームC#を開いてデータを使用する方法を知っていますか?機密情報をkeepassデータベースの中に保存するC#

私はソースをダウンロードしました。私はそれを見て、私が必要とするものを手に入れます。他のアイデア?

+1

あなたはこれをもう少し明確に書き直せますか?あなたは何を達成しようとしているのですか? –

+0

私は秘密情報を非暗号化せずに使用するために、winformアプリケーションからkeepassデータベースを開こうとしています。 – hotips

+0

私はkeepassデータベースを使ったことはありませんが、MSSQLデータベースに暗号化されたデータを保存することも安全だと思います。しかし、サードパーティのソリューションを使用している場合は、データを処理するAPIが必要です。 –

答えて

29

私は私はLinqpadでKeyPass.exeへの参照を追加し、実験を開始したキーパス2データベースを読み取る考えました。私の驚いたことに、外部の助けなしに(良いAPIの証拠)、私はほんの数分後にデータベースを読んでいました。ここで私はそれをやった:

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

含める必要があるネームスペースは何ですか?私はSSISでC#を使用していて、KeePass.exeへの参照を追加してから、KeePassLib.Keys、KeePass.Collectionsなどを追加しましたが、db.RootGroup.GetEntries(true)という行が好きではありません。 – jared

+0

KeePassLib.Keys&KeePassLib.Serialization –

+0

**ヒント** ** File **メニューの** Password manager **メニュー項目を使用してLinqPadにマスターパスワードをデモコードで保存させ、 'var masterpw = Util.GetPassword(" KeePassMaster ");' [here](http://stackoverflow.com/a/12006038/1016343)で詳しく説明しています。この方法では、CryptoAPIを使用して格納されているため、パスワードの削除に気を付けずにデモコードを安全に渡すことができます。 – Matt

0

チェック:KeePass Password Safe(どのようにKeePassの作品のために)

むしろC#System.Cryptographyクラスを使用すると、あなたのデータベースやTXTファイルにenryptedデータを保存...

持ち歩く-2.05-がありますAlpha-Source.zip、KeePassの最新バージョン。 C#ソースコード、1919キロバイト

関連する問題