逐行读取文件然后哈希它们,在php中给出错误的输出

问题描述 投票:-2回答:1

当我尝试在我的网站中散列我的所有用户密码时,首先我将所有密码保存在文件中然后我尝试哈希它们,但我意识到它给了我错误的哈希而不是真正的哈希,

我尝试了2个功能但结果相同,这是PHP代码解释的一切

**文件little.txt只有1个字“密码”

md5()函数:

echo md5("password"); #5f4dcc3b5aa765d61d8327deb882cf99

file()函数然后md5行:

$openfile = file("little.txt");
foreach($openfile as $lines){
    echo $lines.' : '.md5($lines); #286755fad04869ca523320acce0dc6a4
}

fopen()函数:

if ($file = fopen("little.txt", "r")) {
    while(!feof($file)) {
        $lines = fgets($file);
        echo $lines.' : '.md5($lines); #286755fad04869ca523320acce0dc6a4
    }
    fclose($file);
}

我想当我在调用文件时添加一些空格或其他东西,

EDITED

对不起家伙我读了更多关于哈希和加密之间的区别,我编辑了这篇文章。

关于哈希密码我现在用它

md5(sha1($passwords . $various_salts))

非常感谢您的回复,它真的帮助了我:)

php hash md5
1个回答
3
投票

fgetsfile的返回值包括行尾。

您可以先通过rtrim($line, "\n");运行值,也可以使用file的以下选项:

$openfile = file("little.txt", FILE_IGNORE_NEW_LINES);

这将删除你的行尾。

编辑:正如评论中提出的问题所证明的,这是解决问题的一种相当奇怪的方法。想一想为什么需要将所有这些密码存储在一个文件中(散列或其他)。

© www.soinside.com 2019 - 2024. All rights reserved.