Mac 查看Navicat已保存数据库连接的密码

起因是想连接本地mysql, 之前在Navicat建立了数据库连接,设置了自动保存密码。现在忘记密码了,可以这样查看密码:

文件---->导出连接---->获取加密密码---->在线运行---->得到解密密码

1、导出连接如图

Mac Navicat导出连接

2、拿到导出文件夹密码

在这里插入图片描述

3、在线运行PHP在线运行 - TOOLFK工具网(很多在线php调试网站 不行  )粘贴如下代码,修改最后两部分如图: 

<?php
class NavicatPassword
{
    protected $version = 0;
    protected $aesKey = 'libcckeylibcckey';
    protected $aesIv = 'libcciv libcciv ';
    protected $blowString = '3DC5CA39';
    protected $blowKey = null;
    protected $blowIv = null;
     
    public function __construct($version = 12)
    {
        $this->version = $version;
        $this->blowKey = sha1('3DC5CA39', true);
        $this->blowIv = hex2bin('d9c7c3c8870d64bd');
    }
     
    public function encrypt($string)
    {
        $result = FALSE;
        switch ($this->version) {
            case 11:
                $result = $this->encryptEleven($string);
                break;
            case 12:
                $result = $this->encryptTwelve($string);
                break;
            default:
                break;
        }
         
        return $result;
    }
     
    protected function encryptEleven($string)
    {
        $round = intval(floor(strlen($string) / 8));
        $leftLength = strlen($string) % 8;
        $result = '';
        $currentVector = $this->blowIv;
         
        for ($i = 0; $i < $round; $i++) {
            $temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector));
            $currentVector = $this->xorBytes($currentVector, $temp);
            $result .= $temp;
        }
         
        if ($leftLength) {
            $currentVector = $this->encryptBlock($currentVector);
            $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
        }
         
        return strtoupper(bin2hex($result));
    }
     
    protected function encryptBlock($block)
    {
        return openssl_encrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
    }
     
    protected function decryptBlock($block)
    {
        return openssl_decrypt($block, 'BF-ECB', $this->blowKey, OPENSSL_RAW_DATA|OPENSSL_NO_PADDING);
    }
     
    protected function xorBytes($str1, $str2)
    {
        $result = '';
        for ($i = 0; $i < strlen($str1); $i++) {
            $result .= chr(ord($str1[$i]) ^ ord($str2[$i]));
        }
         
        return $result;
    }
     
    protected function encryptTwelve($string)
    {
        $result = openssl_encrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
        return strtoupper(bin2hex($result));
    }
     
    public function decrypt($string)
    {
        $result = FALSE;
        switch ($this->version) {
            case 11:
                $result = $this->decryptEleven($string);
                break;
            case 12:
                $result = $this->decryptTwelve($string);
                break;
            default:
                break;
        }
         
        return $result;
    }
     
    protected function decryptEleven($upperString)
    {
        $string = hex2bin(strtolower($upperString));
         
        $round = intval(floor(strlen($string) / 8));
        $leftLength = strlen($string) % 8;
        $result = '';
        $currentVector = $this->blowIv;
         
        for ($i = 0; $i < $round; $i++) {
            $encryptedBlock = substr($string, 8 * $i, 8);
            $temp = $this->xorBytes($this->decryptBlock($encryptedBlock), $currentVector);
            $currentVector = $this->xorBytes($currentVector, $encryptedBlock);
            $result .= $temp;
        }
         
        if ($leftLength) {
            $currentVector = $this->encryptBlock($currentVector);
            $result .= $this->xorBytes(substr($string, 8 * $i, $leftLength), $currentVector);
        }
         
        return $result;
    }
     
    protected function decryptTwelve($upperString)
    {
        $string = hex2bin(strtolower($upperString));
        return openssl_decrypt($string, 'AES-128-CBC', $this->aesKey, OPENSSL_RAW_DATA, $this->aesIv);
    }
};
 
 
//需要指定版本两种,11或12
//$navicatPassword = new NavicatPassword(11);
$navicatPassword = new NavicatPassword(12);
 
//解密
//$decode = $navicatPassword->decrypt('15057D7BA390');
$decode = $navicatPassword->decrypt('75008D0AE102C19EE3767E201AC9E4D2');
echo $decode."\n";
?>


在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Navicat 是一款数据库管理软件,可用来连接并管理 MySQL 数据库。使用 Navicat 连接 MySQL 数据库需要输入数据库服务器的地址、用户名和密码连接成功后,即可使用 Navicat 来管理 MySQL 数据库,如进行数据库设计、表结构管理、数据编辑等操作。 ### 回答2: Navicat是一款基于图形用户界面的数据库管理工具,它支持多个数据库平台包括MySQL。连接 Navicat 和 MySQL 数据库可以方便进行数据库的管理和维护,具体步骤如下: 1. 下载并安装Navicat软件,然后启动Navicat。 2. 在连接管理器中,点击新建连接。 3. 输入连接信息,选择需要连接的MySQL数据库,输入主机名、端口号、用户名和密码连接类型选择 MySQL。 4. 点击连接测试,确保连接到MySQL数据库成功。如果连接失败,检查输入是否正确。 5. 如果连接成功,点击连接并且进入数据库管理器,可以看到已连接的MySQL数据库。 6. 在数据库管理器中,可以对数据库进行管理和维护操作,包括新建、修改、删除数据库、数据表、字段、索引等等。 7. 点击数据表,可以进行数据的导入和导出,新增数据,编辑数据,删除数据等等。 总之,通过Navicat和MySQL数据库连接,可以方便地进行数据库的管理和维护。Navicat具有良好的操作性和易用性,适合非常规数据库开发和日常数据库管理。 ### 回答3: Navicat是一款数据库管理软件,它支持连接多种数据库,其中MySQL也是其支持的一种。MySQL是一款开源的关系型数据库系统,被广泛应用于互联网企业、大型企业、高科技公司、国家政府等领域。 要在Navicat连接MySQL数据库,需要进行以下步骤: 首先,确保MySQL数据库已安装并正在运行。这可以通过在命令行输入"mysql -u root -p"并提供正确的密码来检查。如果成功登录,则说明MySQL数据库已准备就绪。 其次,打开Navicat软件。在菜单栏中选择“连接”>“MySQL”,然后在“新连接”对话框中输入以下信息: - 连接名:自定义一个名称 - 主机名/IP地址:MySQL服务器所在主机的IP地址或主机名(比如localhost) - 端口号:默认是3306 - 用户名:MySQL登录用户名(如root) - 密码:MySQL登录密码 接下来,选择一个已存在的数据库或创建一个新的数据库。要创建新的数据库,可以在菜单栏中选择“数据库”>“新建数据库”,然后在“新建数据库”对话框中输入数据库名称和字符集。 最后,就可以在Navicat中管理MySQL数据库了。可以通过“表”菜单添加、删除或修改表格,也可以通过“查询”菜单执行SQL查询语句进行数据查询和更新。 总的来说,Navicat和MySQL数据库之间的连接非常简单和方便,只需要提供正确的连接信息即可。而Navicat提供了丰富的功能和易用的界面,使得MySQL数据库管理更加高效和便捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值