日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

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

發布時間:2023/12/20 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Navicat查看密码,忘记密码之解决方案【Java版】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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+版本要勾選【導出密碼】選項!)Navicat11Navicat12+ 選擇【打開】,信息展示如下圖:

三、在線運行

訪問

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版】的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。