导出连接
点击 navicat 菜单栏文件导出连接,勾选导出密码。得到 .ncx 文件
编写解析代码,解密
记得修改文件路径
@Test
void test48() throws DocumentException {
AES aes = new AES("CBC", "PKCS7Padding", "libcckeylibcckey".getBytes(), "libcciv libcciv ".getBytes());
//整体参考:http://t.zoukankan.com/lori-p-15686959.html
//指定导出文件
FileReader fileReader = new FileReader("C:\\Users\\xingz\\Desktop\\connections.ncx");
String result = fileReader.readString();
System.out.println("==================获取文件内容==================");
System.out.println(result);
Document document = DocumentHelper.parseText(result);
Element root = document.getRootElement();
final Iterator<Element> elementIterator = root.elementIterator("Connection");
while (elementIterator.hasNext()) {
Element connection = elementIterator.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");
String sshHost = connection.attributeValue("SSH_Host");
String sshPort = connection.attributeValue("SSH_Port");
String sshUserName = connection.attributeValue("SSH_UserName");
String sshPassword = connection.attributeValue("SSH_Password");
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.aspx
System.out.println("6.------->密码:" + aes.decryptStr(encryPassword));
System.out.println("7.------->数据库名称:" + database);
System.out.println("8.------->SSH主机:" + sshHost);
System.out.println("8.------->SSH端口:" + sshPort);
System.out.println("8.------->SSH用户:" + sshUserName);
System.out.println("8.------->SSH密码:" + (StrUtil.isBlank(sshPassword) ? "" : aes.decryptStr(sshPassword)));
System.out.println("==============================================");
System.out.println();
System.out.println();
System.out.println();
}
}
依赖maven
<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>