【问题标题】:show by printf data encrypted in php with mysqli [closed]通过使用mysqli在php中加密的printf数据显示[关闭]
【发布时间】:2015-07-21 00:04:35
【问题描述】:

我的 php 有问题,我正在编写一个 php 文件以通过 printf 显示与数据库相关的 encrypted_pa​​ssword 的数据。我想选择值并将其显示在屏幕上,但不起作用,我已经这样做了:

$query = "SELECT * FROM  `users` WHERE  `email` =  '$email' ORDER BY  `users`.`uid` ASC LIMIT 0 , 30";

$result = $con->query($query);  $row = $result->fetch_array(MYSQLI_ASSOC);
printf ("consulta %s nombre: %s email:(%s) salt: %s y pass: $s\n", $query,$row['name'], $row['email'],$row['salt'],base64_encode($row['encrypted_password']));

printf 按屏幕显示:

咨询 SELECT * FROM users WHERE email = 'elvega3009@msn.com' ORDER BY users.uid ASC LIMIT 0 , 30 nombre: XXXX email:(xxxxxxxx@msn.com ) salt: a3f7734b0e 是通过:

pass 字段不按屏幕显示,此数据在数据库中以base64_encode 编码,我不知道是否是问题,但我需要此数据按屏幕显示。 我需要帮助。提前非常感谢

【问题讨论】:

  • 如果跳过 base64_encode 函数会发生什么?您是否看到“通过:”字段中的值?您是否尝试过 var_dump(base64_encode($row['encrypted_pa​​ssword']))?注意,base64_encode 是一种编码模式,很容易推导出来。对于密码,您需要像 md5 o sha 这样的加密机制(散列函数)。见stackoverflow.com/questions/3993937/…

标签: php database mysqli printf


【解决方案1】:

尝试将 %s 而不是 $s 放在行尾:

printf ("consulta %s nombre: %s email:(%s) salt: %s y pass: $s\n", `$query,$row['name'],` $row['email'],$row['salt'],base64_encode($row['encrypted_password']));

您还应该使用 md5 或 sha1 函数来存储密码。

【讨论】:

  • 您好,感谢您的回答。我已经阅读了有关 md5 和 sha1 的加密内容,这很简单,但是我如何使用这些函数解密?
  • 它们不容易被解密,这就是想法。您要将散列密码存储在数据库中,然后您只需将从数据库中获取的密码散列值与用户插入的密码进行比较。例如($hashPassFromDB == md5($_POST['password'])。您可以在这篇文章中看到一个示例:stackoverflow.com/questions/488804/php-mysql-compare-password,您可以在这篇出色的文章中了解更多关于密码哈希的信息:sitepoint.com/password-hashing-in-php
猜你喜欢
  • 2013-05-14
  • 2023-03-25
  • 2019-10-11
  • 2017-02-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多