01-查看Navicat加密的数据库密码

简介: 01-查看Navicat加密的数据库密码

查看Navicat加密的数据库密码

背景:本机装的MySQL数据库密码忘记了,打开了Navicat连接过数据库,不过密码是加密的,既然能加密那就能解密,哈哈哈哈。

          解密后发现密码居然是password,好尴尬

1、打开运行窗口,输入regedit,点击确认按钮,打开注册表编辑器

2、在注册表中找到Navicat加密后的密码

  • 展开【HKEY_CURRENT_USER】
  • 展开【Software】
  • 展开【PremiumSoft】
  • 展开【NavicatPG】
  • 展开【Servers】
  • 选择 【MySQL】
  • 右侧找到 pwd,双击并复制数值数据

 

3、打开PHP在线运行工具,粘贴解密代码

1. <?php
2. class NavicatPassword
3. {
4. protected $version = 0;
5. protected $aesKey = 'libcckeylibcckey';
6. protected $aesIv = 'libcciv libcciv ';
7. protected $blowString = '3DC5CA39';
8. protected $blowKey = null;
9. protected $blowIv = null;
10. 
11. public function __construct($version = 12)
12.     {
13. $this->version = $version;
14. $this->blowKey = sha1('3DC5CA39', true);
15. $this->blowIv = hex2bin('d9c7c3c8870d64bd');
16.     }
17. 
18. public function encrypt($string)
19.     {
20. $result = FALSE;
21. switch ($this->version) {
22. case 11:
23. $result = $this->encryptEleven($string);
24. break;
25. case 12:
26. $result = $this->encryptTwelve($string);
27. break;
28. default:
29. break;
30.         }
31. 
32. return $result;
33.     }
34. 
35. protected function encryptEleven($string)
36.     {
37. $round = intval(floor(strlen($string) / 8));
38. $leftLength = strlen($string) % 8;
39. $result = '';
40. $currentVector = $this->blowIv;
41. 
42. for ($i = 0; $i < $round; $i++) {
43. $temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
44. $currentVector = $this->xorBytes($currentVector, $temp);
45. $result .= $temp;
46.         }
47. 
48. if ($leftLength) {
49. $currentVector = $this->encryptBlock($currentVector);
50. $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
51.         }
52. 
53. return strtoupper(bin2hex($result));
54.     }
55. 
56. protected function encryptBlock($block)
57.     {
58. return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
59.     }
60. 
61. protected function decryptBlock($block)
62.     {
63. return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
64.     }
65. 
66. protected function xorBytes($str1, $str2)
67.     {
68. $result = '';
69. for ($i = 0; $i < strlen($str1); $i++) {
70. $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
71.         }
72. 
73. return $result;
74.     }
75. 
76. protected function encryptTwelve($string)
77.     {
78. $result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
79. return strtoupper(bin2hex($result));
80.     }
81. 
82. public function decrypt($string)
83.     {
84. $result = FALSE;
85. switch ($this->version) {
86. case 11:
87. $result = $this->decryptEleven($string);
88. break;
89. case 12:
90. $result = $this->decryptTwelve($string);
91. break;
92. default:
93. break;
94.         }
95. 
96. return $result;
97.     }
98. 
99. protected function decryptEleven($upperString)
100.     {
101. $string = hex2bin(strtolower($upperString));
102. 
103. $round = intval(floor(strlen($string) / 8));
104. $leftLength = strlen($string) % 8;
105. $result = '';
106. $currentVector = $this->blowIv;
107. 
108. for ($i = 0; $i < $round; $i++) {
109. $encryptedBlock = substr($string, 8 * $i, 8);
110. $temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
111. $currentVector = $this->xorBytes($currentVector, $encryptedBlock);
112. $result .= $temp;
113.         }
114. 
115. if ($leftLength) {
116. $currentVector = $this->encryptBlock($currentVector);
117. $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
118.         }
119. 
120. return $result;
121.     }
122. 
123. protected function decryptTwelve($upperString)
124.     {
125. $string = hex2bin(strtolower($upperString));
126. return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
127.     }
128. };
129. 
130. 
131. //需要指定版本两种,11或12
132. //$navicatPassword = new NavicatPassword(11);
133. $navicatPassword = new NavicatPassword(12);
134. 
135. //解密
136. //$decode = $navicatPassword->decrypt('15057D7BA390');
137. $decode = $navicatPassword->decrypt('E75BF077AB8BAA3AC2D5');  // 替换成上一步的数据数值
138. echo $decode."\n";
139. ?>

4. 修改倒数第三行NavicatPassword的版本值

5、更改倒数第二行decrypt()方法中的字符串为Navicat加密后的密码

6、点击执行,右侧得到解密后的密码

相关文章
|
12月前
|
安全 druid Nacos
0 代码改造实现应用运行时数据库密码无损轮转
本文探讨了敏感数据的安全风险及降低账密泄漏风险的策略。国家颁布的《网络安全二级等保2.0标准》强调了企业数据安全的重要性。文章介绍了Nacos作为配置中心在提升数据库访问安全性方面的应用,并结合阿里云KMS、Druid连接池和Spring Cloud Alibaba社区推出的数据源动态轮转方案。该方案实现了加密配置统一托管、帐密全托管、双层权限管控等功能,将帐密切换时间从数小时优化到一秒,显著提升了安全性和效率。未来,MSE Nacos和KMS将扩展至更多组件如NoSQL、MQ等,提供一站式安全服务,助力AI时代的应用安全。
600 14
|
SQL 数据库 数据安全/隐私保护
数据库数据恢复——sql server数据库被加密的数据恢复案例
SQL server数据库数据故障: SQL server数据库被加密,无法使用。 数据库MDF、LDF、log日志文件名字被篡改。 数据库备份被加密,文件名字被篡改。
|
9月前
|
存储 弹性计算 安全
现有数据库系统中应用加密技术的不同之处
本文介绍了数据库加密技术的种类及其在不同应用场景下的安全防护能力,包括云盘加密、透明数据加密(TDE)和选择列加密。分析了数据库面临的安全威胁,如管理员攻击、网络监听、绕过数据库访问等,并通过能力矩阵对比了各类加密技术的安全防护范围、加密粒度、业务影响及性能损耗。帮助用户根据安全需求、业务改造成本和性能要求,选择合适的加密方案,保障数据存储与传输安全。
|
12月前
|
安全 Java 数据库
Jasypt加密数据库配置信息
本文介绍了使用 Jasypt 对配置文件中的公网数据库认证信息进行加密的方法,以提升系统安全性。主要内容包括:1. 背景介绍;2. 前期准备,如依赖导入及版本选择;3. 生成密钥并实现加解密测试;4. 在配置文件中应用加密后的密码,并通过测试接口验证解密结果。确保密码安全的同时,保障系统的正常运行。
831 3
Jasypt加密数据库配置信息
|
Oracle 安全 关系型数据库
【Oracle】使用Navicat Premium连接Oracle数据库两种方法
以上就是两种使用Navicat Premium连接Oracle数据库的方法介绍,希望对你有所帮助!
2570 28
|
SQL 关系型数据库 网络安全
Navicat Premium 17 最新版下载与配置:5分钟完成企业级数据库工具部署
Navicat Premium 17 是一款支持多种主流数据库(如 MySQL、Oracle、PostgreSQL 等)的多数据库管理工具,提供可视化数据建模、SQL 编辑和数据同步等功能。试用版提供 14 天全功能体验,商业版支持跨平台使用。安装环境要求 Windows 10/11 或 macOS 12.0+,最低配置为 4GB 内存。下载并解压安装包后,按步骤启动安装程序、接受许可协议、自定义安装路径并完成安装。首次运行时需激活许可证并配置数据库连接。常见问题包括无法写入注册表、试用期续费及连接数据库权限问题。高级功能涵盖 SSH 通道加速、自动化任务调度和性能调优建议。
5615 19
|
存储 缓存 Java
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
2407 3
java语言后台管理ruoyi后台管理框架-登录提示“无效的会话,或者会话已过期,请重新登录。”-扩展知识数据库中密码加密的方法-问题如何解决-以及如何重置若依后台管理框架admin密码-优雅草卓伊凡
|
9月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
544 158
|
9月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
9月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
1441 152