【问题标题】:php hash() with sha512 showing different results for same value [closed]带有sha512的php hash()显示相同值的不同结果[关闭]
【发布时间】:2013-08-05 00:00:14
【问题描述】:
<?php
date_default_timezone_set('Asia/Kolkata');
$xmlfile='xml/adminpwd.xml';
$xml = simplexml_load_file($xmlfile);

if (!empty($_POST['password'])) {
    extract($_POST);
    if($adminpwd!='this')
        $error="Incorrect Password. Enter the correct password.";
}
?>

<form method='post' action='' name='admin'>
<h3 style="color: #798196;">Enter Current Password</h3><br/>
        <input type='password' name='adminpwd' />
        <input type='submit' name='password' value='Enter'>
</form>

这是我的脚本。

当我尝试这个时:

<?php
    if (isset($error))
        echo "<br/><h3 class='error'>".hash('sha512', $adminpwd)."</h3><br/>";
?>

我得到输出: de784a6d81e125ff2223d977683c3efdd4513941d3737861008b8358d10e8d2757963c3a2619d0924a70d0e11b53492847f741af6e767388fd39em5c170508dp795>

但是当我尝试这个时:

<?php
    if (isset($error))
        echo "<br/><h3 class='error'>".hash('sha512', $_POST['adminpwd'])."</h3><br/>";
?>

我得到输出: 1fc286c9c7dc733b3a46a21a923c646c14c19bac951d63380ec8d4b3c6786fdbe7dd4bd325eef31553fa829e19989fe060da01921cfc68f7b9ff03383f78710b

虽然两个变量都包含相同的字符串。为什么输出不同?

【问题讨论】:

  • 在这两种情况下都打印出$adminpwd。在你看到它们之前,你不会知道它们是一样的。另请注意,前导/尾随空格也总是值得怀疑的。
  • 这里好点 ↑↑↑ 确保修剪输入的文本。
  • 两次我都输入了相同的密码。并重复实验5次以上以确认。但结果是一样的。当我现在尝试时,两种情况都给出相同的输出。没有得到问题。不过谢谢。
  • 这个问题似乎跑题了,因为它被错误地测试了。

标签: php hash sha512


【解决方案1】:

它不同的唯一方法是 $_POST['adminpwd'] 中的内容不是完全相同的字符串值。可能由于您没有检查 $adminpwd,因此可能不是每次都设置它。

此外,在 $_POST 或任何其他请求变量上使用 extract() 并不是非常安全,因为您实际上是在允许用户创建 PHP 变量。

【讨论】:

    猜你喜欢
    • 2012-10-13
    • 1970-01-01
    • 2021-07-01
    • 2015-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多