今天非常的倒霉,因为学习了Vue的相关知识,想自己写一个后端服务器来练习一下Vue
然后 忘记了Docker中Mysql的密码。。。
很抽象
下面是我的解决方法

  • 一、如果在本地的Navicat Premium上连接过数据库,就可以使用工具导出连接
  • 二、用编辑器打开导出的链接文件 就可以看到 用户名、密码、以及相关链接信息
  • 三、我们复制密码(加密后的),进行解密—程序是PHP的 多亏一位Github:https://github.com/tianhe1986/FatSmallTools 上的大佬写了个程序,可以直接破译
  • 选择一个在线编译器 https://tool.lu/coderunner/ 把代码粘上去就行了

代码如下

点击查看代码
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 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 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 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);    }}  use FatSmallTools\NavicatPassword; //需要指定版本,11或12$navicatPassword = new NavicatPassword(12);//$navicatPassword = new NavicatPassword(11); //解密//$decode = $navicatPassword->decrypt('15057D7BA390');$decode = $navicatPassword->decrypt('999239DEBFA1960BCCB12566F1F417A6');echo $decode."\n";

* 四、替换代码中的倒数第二行字符串,就可以获得连接密码最后 还是要好好地记住自己的密码啊?