Navicat忘记密码怎么办

在日常开发过程中,忘记了navicat保存的数据库密码,应该如何找到并还原密码呢?


文章目录

  • Navicat忘记密码怎么办
  • 前言
  • 一、Navicat密码查看工具是什么?
  • 二、使用步骤
    • 1.寻找(导出)密码
    • 2.填入(导入)数据
  • 三、在线运行
  • 四、总结

前言

  在使用Navicat过程中,我们忘记了保存的数据库密码,来该如何找回来呢?本文就介绍了如何找到密码的说明。


一、Navicat密码查看工具是什么?

  Navicat密码查看工具是一个还原Navicat密码的工具,根据Navicat导出连接的文件或加密密码,还原出真实密码的工具。

二、使用步骤

1.寻找(导出)密码

navicat(11.2.7、12.1.15、15.1.17、16.0.3上述版本均已通过测试)

1.1.注册表

计算机\HKEY_CURRENT_USER\SOFTWARE\PremiumSoft\Navicat\Servers\

  以navicat15为例,通过上方路径,找到注册表中存储密码值的位置(如下图),选中要查看密码的连接名称,双击Pwd项,复制对应的值,至此获得了密文

1.2.navicat导出(推荐)

  以navicat15为例,菜单栏上点击文件,选择导出连接...,一定要选中导出密码!!!导出格式为*.ncx(该ncx本质上是xml文件,文件中包含连接的全部信息)

2.填入(导入)数据

  首先,请选择对应的Navicat版本(另:12及以上选择Navicat12+)

  将找到的密码(或导出的ncx文件),填入(或导入)到此工具中,如下图所示:

  点击【查看密码】后,如图:

  点击【选择文件】后,选择ncx文件 (注:Navicat11版本没有勾选导出密码选项,直接导出即可;Navicat12+版本要勾选【导出密码】选项!)\color{red} (注:Navicat11版本没有勾选导出密码选项,直接导出即可;Navicat12+版本要勾选【导出密码】选项!)(注:Navicat11版本没有勾选导出密码选项,直接导出即可;Navicat12+版本要勾选【导出密码】选项!) 选择【打开】,信息展示如下图:

三、在线运行

访问

https://www.nhooo.com/tool/java8/

复制粘贴一下java解密代码


import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import javax.xml.bind.DatatypeConverter;
import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.util.Arrays;public class Main {public static void main(String []args) {//navicat11解密Navicat11Cipher de = new Navicat11Cipher();System.out.println(de.decryptString("15057D7BA390"));//navicat12解密Navicat12Cipher de12 = new Navicat12Cipher();System.out.println(de12.decryptString("503AA930968F877F04770B47DD731DC0"));}static class Navicat11Cipher {public static final String DefaultUserKey = "3DC5CA39";private static byte[] _IV;private static SecretKeySpec _Key;private static Cipher _Encryptor;private static Cipher _Decryptor;private static void initKey(String UserKey) {try {MessageDigest sha1 = MessageDigest.getInstance("SHA1");byte[] userkey_data = UserKey.getBytes(StandardCharsets.UTF_8);sha1.update(userkey_data, 0, userkey_data.length);_Key = new SecretKeySpec(sha1.digest(), "Blowfish");} catch (Exception e) {e.printStackTrace();}}private static void initChiperEncrypt() {try {// Must use NoPadding_Encryptor = Cipher.getInstance("Blowfish/ECB/NoPadding");_Encryptor.init(Cipher.ENCRYPT_MODE, _Key);} catch (Exception e) {e.printStackTrace();}}private static void initChiperDecrypt() {try {// Must use NoPadding_Decryptor = Cipher.getInstance("Blowfish/ECB/NoPadding");_Decryptor.init(Cipher.DECRYPT_MODE, _Key);} catch (Exception e) {e.printStackTrace();}}private static void initIV() {try {byte[] initVec = DatatypeConverter.parseHexBinary("FFFFFFFFFFFFFFFF");_IV = _Encryptor.doFinal(initVec);} catch (Exception e) {e.printStackTrace();}}private void xorBytes(byte[] a, byte[] b) {for (int i = 0; i < a.length; i++) {int aVal = a[i] & 0xff; // convert byte to integerint bVal = b[i] & 0xff;a[i] = (byte) (aVal ^ bVal); // xor aVal and bVal and typecast to byte}}private void xorBytes(byte[] a, byte[] b, int l) {for (int i = 0; i < l; i++) {int aVal = a[i] & 0xff; // convert byte to integerint bVal = b[i] & 0xff;a[i] = (byte) (aVal ^ bVal); // xor aVal and bVal and typecast to byte}}static {initKey(DefaultUserKey);initChiperEncrypt();initChiperDecrypt();initIV();}private byte[] Encrypt(byte[] inData) {try {byte[] CV = Arrays.copyOf(_IV, _IV.length);byte[] ret = new byte[inData.length];int blocks_len = inData.length / 8;int left_len = inData.length % 8;for (int i = 0; i < blocks_len; i++) {byte[] temp = Arrays.copyOfRange(inData, i * 8, (i * 8) + 8);xorBytes(temp, CV);temp = _Encryptor.doFinal(temp);xorBytes(CV, temp);System.arraycopy(temp, 0, ret, i * 8, 8);}if (left_len != 0) {CV = _Encryptor.doFinal(CV);byte[] temp = Arrays.copyOfRange(inData, blocks_len * 8, (blocks_len * 8) + left_len);xorBytes(temp, CV, left_len);System.arraycopy(temp, 0, ret, blocks_len * 8, temp.length);}return ret;} catch (Exception e) {e.printStackTrace();return null;}}public String encryptString(String inputString) {try {byte[] inData = inputString.getBytes(StandardCharsets.UTF_8);byte[] outData = Encrypt(inData);return DatatypeConverter.printHexBinary(outData);} catch (Exception e) {e.printStackTrace();return "";}}private byte[] Decrypt(byte[] inData) {try {byte[] CV = Arrays.copyOf(_IV, _IV.length);byte[] ret = new byte[inData.length];int blocks_len = inData.length / 8;int left_len = inData.length % 8;for (int i = 0; i < blocks_len; i++) {byte[] temp = Arrays.copyOfRange(inData, i * 8, (i * 8) + 8);temp = _Decryptor.doFinal(temp);xorBytes(temp, CV);System.arraycopy(temp, 0, ret, i * 8, 8);for (int j = 0; j < CV.length; j++) {CV[j] = (byte) (CV[j] ^ inData[i * 8 + j]);}}if (left_len != 0) {CV = _Encryptor.doFinal(CV);byte[] temp = Arrays.copyOfRange(inData, blocks_len * 8, (blocks_len * 8) + left_len);xorBytes(temp, CV, left_len);for (int j = 0; j < temp.length; j++) {ret[blocks_len * 8 + j] = temp[j];}}return ret;} catch (Exception e) {e.printStackTrace();return null;}}public String decryptString(String hexString) {try {byte[] inData = DatatypeConverter.parseHexBinary(hexString);byte[] outData = Decrypt(inData);return new String(outData, StandardCharsets.UTF_8);} catch (Exception e) {e.printStackTrace();return "";}}}static class Navicat12Cipher {private static SecretKeySpec _AesKey;private static IvParameterSpec _AesIV;static {_AesKey = new SecretKeySpec("libcckeylibcckey".getBytes(StandardCharsets.UTF_8), "AES");_AesIV = new IvParameterSpec("libcciv libcciv ".getBytes(StandardCharsets.UTF_8));}public String encryptString(String plaintext) {try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");cipher.init(Cipher.ENCRYPT_MODE, _AesKey, _AesIV);byte[] ret = cipher.doFinal(plaintext.getBytes(StandardCharsets.UTF_8));return DatatypeConverter.printHexBinary(ret);} catch (Exception e) {e.printStackTrace();return "";}}public String decryptString(String ciphertext) {try {Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");cipher.init(Cipher.DECRYPT_MODE, _AesKey, _AesIV);byte[] ret = cipher.doFinal(DatatypeConverter.parseHexBinary(ciphertext));return new String(ret, StandardCharsets.UTF_8);} catch (Exception e) {e.printStackTrace();return "";}}}
}

四、总结

  本文仅仅简单介绍了此工具的使用,此项目源代码已开源,欢迎大家下载体验,如果有帮到您,麻烦点下star,谢谢!
项目源码:
github : https://github.com/Zhuoyuan1/navicat_password_decrypt
如果github打不开,码云地址:https://gitee.com/lzy549876/navicat_password_decrypt
  另外网上大多数流传的都是PHP语言版本的,而本人是一名JAVA开发者,故做出了这一工具,希望能帮助到大家!
  声明:该工具源码仅仅只作学术性研究,不可商业用途!

Navicat查看密码,忘记密码之解决方案【Java版】相关推荐

  1. linux下mysql5.7初始密码查看及忘记密码重置

    linux下mysql5.7初始密码查看及忘记密码重置 前段时间安装mysql5.7后,第一次登陆发现空密码怎么都登陆不成功,后来网上查了一下发现,从5.7开始会自动生成一个随机密码了. 查看初始密码 ...

  2. 阿里云短信验证解决方案(java版)(redis存储)

    阿里云短信验证解决方案(java版)(redis存储) 参考文章: (1)阿里云短信验证解决方案(java版)(redis存储) (2)https://www.cnblogs.com/Amos-Tur ...

  3. navicat连接mysql忘记密码_navicat忘记密码怎么办

    navicat忘记密码怎么办? 1.关闭正在运行的MySQL服务:控制面板 →管理工具→服务→MySQL56(本人安装版本为mysql_5.6.16_32_msi) 2.打开DOS窗口,转到mysql ...

  4. Navicat连接成功忘记密码-查看密码

    1.在Navicat导出要查看的密码连接 打开在线php工具 http://www.dooccn.com/php5.4/ 运行下面代码: ```php <?phpnamespace FatSma ...

  5. MySQL 8.x 修改root用户密码/修改密码/重置密码/忘记密码(为了避免掉坑,值得收藏)

    操作系统:CentOS Linux release 8.2.2004 (Core) MySQL版本:mysql Ver 8.0.26 for Linux on x86_64 (Source distr ...

  6. MySQL数据库修改密码忘记密码

    方法1:用SETPASSWORD命令 MySQL -uroot mysql> SET PASSWORD FOR'root'@'localhost' = PASSWORD('newpass'); ...

  7. mac 修改本地数据库密码 忘记密码

    Mac本地安装了数据库,忘记数据库密码的情况下,可以按照以下步骤进行修改密码 step1: 关闭mysql服务: 苹果->系统偏好设置->最下边点mysql 在弹出页面中 关闭mysql服 ...

  8. window下MySQL密码忘记密码这么办?

    方法一 : Windows下的实际操作如下 1.关闭正在运行的MySQL. 2.打开DOS窗口,转到mysql\bin目录. 3.输入mysqld --skip-grant-tables回车.如果没有 ...

  9. oracle解锁system密码,Oracle System密码忘记 密码修改、删除账号锁定lock

    运行cmd命令行 录入 sqlplus /nolog 无用户名登录 conn /as sysdba 连接到数据本地数据 alter user system identified by password ...

  10. oracle 账户 锁定 密码忘记了,Oracle System密码忘记 密码修改、删除账号锁定lock

    运行cmd命令行 录入 sqlplus /nolog  无用户名登录 conn /as sysdba  连接到数据本地数据 alter user system identified by passwo ...

最新文章

  1. Facebook 应用机器学习团队专访:人工智能在 Facebook 中的应用
  2. 智能高柜机器人_丰田公司推出新型助力机器人
  3. 三星手机com.android.settings,三星手机恢复出厂设置方法【具体步骤】
  4. 如何优雅的利用Windows服务来部署ASP.NET Core程序
  5. 9008刷机怎么刷_OV快捷进入高通进9008或fastboot模式刷机解锁,和MTK关机解锁
  6. PAT乙级(1019 数字黑洞)
  7. 从零开始学前端:浮动 --- 今天你学习了吗?(CSS:Day15)
  8. springmvc 静态资源 配置
  9. 利用切片操作,实现一个trim()函数,去除字符串首尾的空格
  10. 百度智能云知识中台,驱动产业智能化升级
  11. MongoDB需要慎用local、admin数据库
  12. python 遍历数组gbk编码_python bytes和bytearray、编码和解码
  13. 移动app设计公司流程—APP设计需求分析规范
  14. 三阶魔方CFOP cross总结
  15. 连点器安卓手机版_【百度识图器安卓下载】百度识图器官方app下载 v3.6.0 手机版...
  16. tan和cot的梗_cot和tan的关系
  17. 简单的html网页超链接
  18. w7系统事件日志服务器,win7系统事件日志服务4201错误的解决方法
  19. 深入了解电容(四):钽电容、聚合物有机半导体电容(POSCAP,ECAS)和薄膜电容
  20. php租用空间,php虚拟主机空间租用(php虚拟主机免费)

热门文章

  1. Qt界面无法切换输入法的解决方法
  2. uniapp 模块权限配置 权限管理 权限设置
  3. CodeVS 1359 数字计数 51nod 1042 数字0-9的数量 Pascal
  4. 论文笔记 | 用户画像
  5. base64在线解码(等号或者双等号结尾的数据的解码)
  6. WORDPRESS优化技巧之CDN加速
  7. python通过scapy模块进行arp断网攻击
  8. 指定服务器不存在或访问被拒绝访问,SQL Server不存在或访问被拒绝怎么办
  9. ios安装app提示【未受信任的企业级开发者】。在设置中信任此开发者
  10. 华为ADS高阶自动驾驶视频和技术方案曝光!