解析navicate数据库密码

这篇具有很好参考价值的文章主要介绍了解析navicate数据库密码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 在线运行地址:代码在线运行 - 在线工具文章来源地址https://www.toymoban.com/news/detail-727242.html

<?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);
//这里我指定的12的版本,原先指定的11,执行之后的密码是乱码
$navicatPassword = new NavicatPassword(12);
 
//解密
//$decode = $navicatPassword->decrypt('5658213B');
$decode = $navicatPassword->decrypt('复制出来的密码');
echo $decode."\n";
?>

到了这里,关于解析navicate数据库密码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Windows修改MySQL数据库密码(修改或忘记密码)  

    今天练习远程访问数据库时,为了方便访问,就想着把数据库密码改为统一的,以后我们也会经常遇到MySQL需要修改密码的情况,比如密码太简单、忘记密码等等。在这里我就借鉴其他人的方法总结几种修改MySQL密码的方法。 我就以实际操作修改root密码为例,操作系统为win

    2024年02月09日
    浏览(64)
  • Windows修改MySQL数据库密码(修改或忘记密码)

    今天练习远程访问数据库时,为了方便访问,就想着把数据库密码改为统一的,以后我们也会经常遇到MySQL需要修改密码的情况,比如密码太简单、忘记密码等等。在这里我就借鉴其他人的方法总结几种修改MySQL密码的方法。 我就以实际操作修改root密码为例,操作系统为win

    2024年02月08日
    浏览(61)
  • 【数据库】忘记mysql本地密码

    说明 太久没使用本地mysql数据库,忘记了密码。 1.进入安装MySQL的bin目录下,按下shift + 鼠标右键,会出现“在此处打开 PowerShell 窗口”的字样,然后点击,打开PowerShell 2.输入 net stop mysql (或 net stop mysql80 ),停止MySQL服务(或者到服务中手动停止。位置:控制面板所有控制

    2024年02月12日
    浏览(50)
  • mysql数据库root密码遗忘后,修改root密码

    目录 方式一: 方式二: 2.1 也可以像我这样,普通用户登录进去后 2.2 执行如下命令,将已知的user1的加密密文更新到root中 2.3 查询数据库 2.4 用root用户登录 2.5 登录正常,但这会root登录进去后,无法执行具体的sql,只要有操作,会报如下的错: 2.6 需要重新ALTRE下用户信息

    2024年02月12日
    浏览(51)
  • Mysql数据库--修改root密码的几种方法(忘记密码&知道密码)

    🍁 通过 alter user root identified by \\\'新密码\\\'; 🍁 通过 set password for 用户名@\\\'用户地址\\\' = \\\'新密码\\\'; 2.1.1 🎈 停止mysql服务 2.1.2 🎈 创建mysql-init-file.txt文件 2.1.3 🎈 init-file的权限(最好赋权一下) 2.1.3 🎈 使用–init-file选项启动mysql服务 2.1.4 🎈 新密码连接测试(密码:Zyl@123321)

    2024年02月08日
    浏览(78)
  • 解决常见的数据库1045密码错误问题

    注:可视化工具 Navicat 15 for MySQL 当我们某天忘记我们的root用户密码,登录不到数据库时,只需要修改root用户的密码即可。 1.首先看一下报错信息1045 2.看到这个问题,我们可以找到我们MySQL安装路径下的my.ini文件,使用记事本或者edit打开它。 如果不能打开放到桌面进行打开修

    2024年02月08日
    浏览(64)
  • Spring 工程数据库密码用户配置问题

    在 Spring 工程中,连接 MySQL 数据库的用户名和密码通常保存在配置文件中(比如 application.properties 或者 application.yml),而在跑测试用例时,这些配置信息往往需要与生产环境隔离开来。 可以使用 Spring 的配置文件来解决这个问题,具体方法如下: 在主配置文件中只写明用户

    2024年02月09日
    浏览(42)
  • MySQL数据库修改root账户密码

    博主今天登录数据库遇到了一个问题,通过这篇文章(http://t.csdn.cn/58ECT)解决了。文中关于修改root账户密码的部分,博主觉得有必要写一篇文章总结下。 我的是在D盘下,操作时可以一步步来,用CMD的cd(切换目录)+tab(提示文件名),逐步切换到目标目录下。需要注意的是

    2024年02月06日
    浏览(48)
  • RuoYi对数据库密码加密功能使用

    在我们日常配置文件中会输入数据库的ip,端口,数据库名称,数据库账号和数据库密码,如果是明文就会出现这个安全隐患的问题,在cnas测试中安全测试可能会直接将这漏洞归类为中级漏洞,所以为了解决这个问题我们可以通过集成RuoYi框架的druid加密功能 文件名称:drui

    2024年02月09日
    浏览(40)
  • 忘记密码不用愁【linux下 MySQL数据库忘记密码解决方案】

    前言 : 在日常的开发中我们有可能忘记了我们自己设置的密码,譬如说Mysql数据库的密码,不过不要担心,小编整理了2个方法带给大家。 查看初始化密码进行登录: 查看mysql的初始密码 在root@localhost后面的就是mysql初始的密码,以上图为例 初始密码则为:ukehBfivW1 直接跳过

    2024年02月10日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包