测试环境:Navicat Premium 版本15.0.25
理论版本12以上即可。
参考地址:navicat~导出数据库密码 - 走看看
Hutool参考文档
代码
import cn.hutool.core.io.file.FileReader;
import cn.hutool.crypto.symmetric.AES;
import org.dom4j.*;import java.util.Iterator;public class NavicatPassword {public static void main(String[] args) throws DocumentException {//整体参考:http://t.zoukankan.com/lori-p-15686959.html//指定导出文件FileReader fileReader = new FileReader("C:\\Users\\administrator\\Desktop\\connections.ncx");String result = fileReader.readString();System.out.println("==================获取文件内容==================");System.out.println(result);Document document = DocumentHelper.parseText(result);Element root = document.getRootElement();Element connection = root.elementIterator("Connection").next();System.out.println("==================获取导出参数==================");String connectionName = connection.attributeValue("ConnectionName");String connType = connection.attributeValue("ConnType");String host = connection.attributeValue("Host");String port = connection.attributeValue("Port");String userName = connection.attributeValue("UserName");String encryPassword = connection.attributeValue("Password");String database = connection.attributeValue("Database");System.out.println("1.------->连接名称:" + connectionName);System.out.println("2.------->数据库类型:" + connType);System.out.println("3.------->主机(IP):" + host);System.out.println("4.------->端口:" + port);System.out.println("5.------->用户名:" + userName);//解密//参考https://the-x.cn/cryptography/Aes.aspxAES aes = new AES("CBC", "PKCS7Padding", "libcckeylibcckey".getBytes(), "libcciv libcciv ".getBytes());String val = aes.decryptStr(encryPassword);System.out.println("6.------->密码:" + val);System.out.println("7.------->数据库名称:" + database);System.out.println("==============================================");System.out.println();System.out.println();System.out.println();System.out.println("================以下为全部连接信息================");Iterator<Attribute> attributeIterator = connection.attributeIterator();while (attributeIterator.hasNext()) {Attribute attribute = attributeIterator.next();System.out.println(attribute.getName() + ":" + attribute.getValue());}}
}
依赖
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.3</version></dependency><!-- 由于IOS等移动端对AES加密有要求,必须为PKCS7Padding模式,但JDK本身并不提供这种模式, 因此 想要支持必须做一些工作。首先引入bc库: --><dependency><groupId>org.bouncycastle</groupId><artifactId>bcprov-jdk15to18</artifactId><version>1.68</version></dependency><!-- https://mvnrepository.com/artifact/org.dom4j/dom4j --><dependency><groupId>org.dom4j</groupId><artifactId>dom4j</artifactId><version>2.1.3</version></dependency>
结果

















