【问题标题】:Display Encrypted Database Fields显示加密的数据库字段
【发布时间】:2020-09-29 09:32:26
【问题描述】:

我终于完成了从 PHP 5.6 到 PHP 7.3 的姗姗来迟的跳跃,并将 mySQL 升级到 MariaDB。除了一个应用程序之外,一切似乎都在工作。我不介意尝试修复脚本中的代码,但我很想得到数据的转储。

其中两个字段已加密。我有盐和加密代码,但我不具备能够运行显示编码字段的查询的技能。

这是来自应用程序的编码函数:

function encode($string) {
$config     = &singleton::get(__NAMESPACE__ . '\config');
$error      = &singleton::get(__NAMESPACE__ . '\error');

$level      = $config->get('encryption_level');
$key        = $config->get('encryption_key');

switch ($level) {
    case 2:
        $error->create(array('type' => 'security_error', 'message' => 'Encode function cannot be used for this database security level.'));
    break;
    default:
        $encrypted  = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));      
    break;
}

return $encrypted;

}

谁能帮忙?

【问题讨论】:

  • 完全取决于你如何加密它。如果它是通过 PHP 加密的,则需要通过该解密算法运行它。
  • 或者加密经常与单向哈希混淆,在这种情况下根本不可能“解密”

标签: php mysql mariadb


【解决方案1】:

我们阅读了文档:

mcrypt_encrypt ( 字符串 $cipher , 字符串 $key , 字符串 $data , 字符串 $mode [, 字符串 $iv ] ) : 字符串

mcrypt_decrypt ( 字符串 $cipher , 字符串 $key , 字符串 $data , 字符串 $mode [, 字符串 $iv ] ) : 字符串

所以如果这样加密它:

$encrypted  = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key)));      

这有望解密它:

$decrypted = base64_decode(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), $encrypted, MCRYPT_MODE_CBC, md5(md5($key)) ));

【讨论】:

    【解决方案2】:

    感谢大家的建议。与此同时,我采取了不同的方法,并在 Wampserver 上加载了一个本地 PHP 5.6 实例,嘿嘿!应用程序再次运行。

    现在我可以使用 cut'n'paste 提取我需要的信息,并使用一个可运行的应用程序。不完美,但它有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-24
      • 2011-04-28
      • 1970-01-01
      • 2012-02-19
      • 1970-01-01
      • 2014-10-29
      • 1970-01-01
      • 2017-01-06
      相关资源
      最近更新 更多