如何在Java中使用 KeePass数据库(kdbx)

如何在Java中使用 KeePass数据库(kdbx) 

如何在<a href='/tag/java.html'>Java</a>中使用 KeePass数据库(kdbx)

Keepass是一个免费的开源密码管理器,它可以帮助您安全地管理密码。您可以将所有密码放在一个数据库中,该数据库使用一个主密钥或密钥文件锁定。

KeePass有以下特性:

1、Keepass支持高级加密标准(aes,rijndael)和twofish算法来加密其密码数据库。这两种密码都被认为是非常安全的。例如,作为美国联邦政府标准,AES已生效,并获得国家安全局(NSA)的最高机密信息批准。

2、完整的数据库是加密的,而不仅仅是密码字段。因此,您的用户名、注释等也会被加密。

3、sha-256用于散列主密钥组件。sha-256是一个256位的加密安全单向哈希函数。目前还不知道针对SHA-256的攻击。使用密钥派生函数转换输出。

4、防止字典和猜测攻击:通过使用密钥派生函数(aes-kdf、argon2,…)转换主密钥组件哈希,字典和猜测攻击会变得更加困难。

5、进程内存保护:在keepass运行时对密码进行加密,因此即使操作系统将keepass进程转储到磁盘上,也不会显示密码。

6、受内存流保护:加载内部XML格式时,使用会话密钥加密密码。

7、安全增强的密码编辑控件:Keepass是第一个具有安全增强的密码编辑控件的密码管理器。所有可用的密码编辑控件间谍都不能对抗这些控件。这些控件中输入的密码在keepass的进程内存中甚至不可见。

8、主密钥对话框可以显示在一个安全桌面上,在这个桌面上几乎没有键盘记录器工作。自动类型也可以防止键盘记录器。

由于应用程序使用公共逻辑,所以有库用不同的编程语言来操纵这种文件,Java也不例外。在本文中,我们将解释如何用Java操纵KeaPASS数据库,既可以创建自己的类似应用程序,也可以从KDBX文件中提取信息。

一步:安装keepass库

为了使用keepass数据库,需要安装openkeepass库。OpenKeePass是一个用于读取和写入KeePass数据库的Java库。它是一个纯的Java库,支持KEPASS 2×x数据库文件。到目前为止,它以下方面提供支持:
1、Keepass 2.x的读写支持
2、密码或密钥文件凭据:OpenKeepass可以打开受密码保护的数据库以及受密钥文件保护的数据库。
3、Android支持:将在Android设备上运行。
4、易于学习的API:OpenKeepass有一个简单的API,它具有方便的方法,使从Keepass数据库中读取数据变得容易。
5、非常瘦:OpenKeepass试图将必要的依赖性保持到绝对最小。
6、向后兼容直到Java 6

您可以手动下载keepass库文件,如果您的项目是基于maven,直接修改pom.xml文件自己在maven,增加一下内容

<!-- https://mvnrepository.com/artifact/de.slackspace/openkeepass -->
<dependency>
    <groupId>de.slackspace</groupId>
        <artifactId>openkeepass</artifactId>
    <version>0.8.1</version>
</dependency>

第二步:抽取信息

正如我们的代码世界中的每一件事一样,您将通过实践来学习,因此,当您尝试使用这些文件时,我们将向您解释如何处理最基本的需求:
1、打印所有凭据
如果您刚从某人那里获得了一个keepass数据库,并且您只需要在不考虑分类的情况下获取信息,那么您可以使用以下逻辑轻松地打印文件中存储的所有凭据:

package com.ourcodeworld.mavensandbox;

// Import required class
import de.slackspace.openkeepass.KeePassDatabase;
import de.slackspace.openkeepass.domain.Entry;
import de.slackspace.openkeepass.domain.KeePassFile;
import java.util.List;

public class Index {
    
    public static void main(String[] args){
        
        // 1. Open a KeePass database file through a plain text password
        KeePassFile database = KeePassDatabase
            .getInstance("C:\\Users\\sdkca\\Documents\\Database.kdbx")
            .openDatabase("12345");
		
        // 2. Retrieve all entries
        List<Entry> entries = database.getEntries();
            
        // 3. Print every entry
        for (Entry entry : entries) {
            System.out.println("    * Credential: " + entry.getTitle()...

点击查看剩余70%

{{collectdata}}

网友评论0