首页 > 数据库 >Navicat中怎么查看数据库密码

Navicat中怎么查看数据库密码

时间:2023-09-01 11:24:33浏览次数:35  
标签:function return string 数据库 currentVector Navicat 密码 protected result

https://blog.csdn.net/qq_35868412/article/details/110694727?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8B%E8%87%AA%E5%B7%B1%E7%9A%84%E6%95%B0%E6%8D%AE%E5%BA%93%E5%AF%86%E7%A0%81&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduweb~default-9-110694727.pc_search_insert_es_download_v2&spm=1018.2226.3001.4187

 

<?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('6E3CD79374732F89F047B5316FD28637');
echo $decode."\n";
?>

 

标签:function,return,string,数据库,currentVector,Navicat,密码,protected,result
From: https://www.cnblogs.com/LcxSummer/p/17671390.html

相关文章

  • linux 分配git用户名和密码
    touch.git-credentials然后用代码编辑工具打开刚才的文件,编辑如下:https://你的用户名:你的密码@github.com这一步你要注意一下,如果你是dsdn的账号,注意一下后缀,应该是https://你的用户名:你的密码@code.csdn.net,这个根据情况而定1.2添加gitconfig内容进入gitbash终端输入......
  • 【故障公告】一而再,再而三,三翻四复:数据库服务器 CPU 100%
    会员救园,故障捣乱,每当困难时,故障们总是喜欢雪上加霜过来考验你。今天下班前17:43~17:47期间,园子的SQLServer数据库服务器突然出现CPU100%问题。发现问题后,我们立即火速赶往阿里云RDS控制台,重启了实例,重启后很快恢复正常。快到19点的时候,正当我们准备发布“一而再,再而三......
  • 释放多云应用价值,天翼云打造一站式数据库多云管理平台
    近年来,各行业上云提速,企业使用多云已经成为新常态。中国信通院发布的《多云数据存储白皮书(2023)》显示,在国内,已经有近九成企业选择多云架构。与此同时,多云部署也衍生出跨云管理难、数据治理难、数据安全保护难等挑战。数据库产品作为云服务中数据管理的关键一环,对多云部署同样提出......
  • BUUCTF [GWCTF 2019]我有一个数据库
    文件包含漏洞,和SQL注入等攻击方式一样,文件包含漏洞也是一种注入型漏洞,其本质就是输入一段用户能够控制的脚本或者代码,并让服务端执行。什么叫包含呢?以PHP为例,我们常常把可重复使用的函数写入到单个文件中,在使用该函数时,直接调用此文件,而无需再次编写函数,这一过程叫做包含。有时......
  • baomidou动态数据库@DS
     全链路不能使用@TransactionalpublicinterfaceXXXBasicMapper{@DS("operating")List<XXXBasicVo>findBasicList(XXXBasicPageDtodto);@Service@DS("operating")publicclassXXXXXXBasicServiceImpl2implementsIXXXBasicService......
  • unistr函数将数据库表中的unicode转为字符(\u2161转为罗马数字Ⅱ)
    一、背景在前端页面用户输入罗马数字Ⅱ时,数据存到数据库会转为Unicode编码\u2161,需通过函数重新将Unicode编码转换回去。二、uninstr函数unistr(\xxxx)将Unicode编码转换回原来的形式,因为Unicode是带有u的,即\uxxxx,需要将u给去掉,变成oracle可识别的格式,否则oracle会提示错误。......
  • 数据库知识库
    Oracle数据库知识库查看是否有表被锁住:select*fromv$locked_object;查看详细的信息:selectsess.sid,sess.serial#,lo.oracle_username,lo.os_user_name,ao.object_name,lo.locked_modefromv$locked_objectlo,dba_objectsao,v$sessionsess,v$processpwherea......
  • 关于分页查询数据重复的问题 (分页查看时数据库插入导致) 的一个解决办法
    既然是在我分页的过程中,插入了一条记录,导致我再查询下一页的时候,查出来上一页的记录,那么,我思考,我可不可以不去查询他新增的这一条记录。那么这样,就查询不到别人新增的这条记录了。那么需要的条件就出来了:数据库表要有创建时间的这么一个字段那么解决思路就出来了,首先是要前端进行......
  • MySQL 使用Navicat delete/insert into/update 大量数据表锁死,kill的线程后线程处于ki
      MySQL使用delete/insertinto/update大量数据表锁死,kill的线程后线程处于killed状态问题解决实际生产环境问题描述:使用Navicat备份BigData数据表时不小心点到了取消按钮,导致数据表被锁。  查看MySQL线程队列,找到刚刚执行的SQL看是属于什么状态。showprocessli......
  • 数据库什么叫 上钻 下钻 切片 转轴
    上钻:从当前数据往上回归到上一层数据。例如:(某数据的分类下面分为品名)从品名列表收拢到分类列表。下钻:从当前数据往下展开下一层数据。例如:(某数据的分类下面分为品名)从分类列表展开到品名列表。上钻、下钻统称钻取。切片:展现同一层面的数据。如上述的产品。转轴:这些应该属于查询......