PHP脚本到MD5分别哈希每行

时间:2019-06-28 22:08:47

标签: php md5

我正在尝试创建一个脚本,该脚本可以使MD5快速哈希很多行(50,000多个)。我有一个我一直在努力工作的脚本,但是有时它会给我不同的输出,我不知道为什么。有什么想法吗?

  <?php  
     if(isset($_POST['btn'])){
            $value=$_POST['text'];
            $ids = explode(PHP_EOL, $value);
            $content = '';
            for ($i=0;$i<count($ids);$i++){
                $content .= md5($ids[$i]).'<br>';
            }

            echo nl2br($content);
     }
     ?>

当我尝试哈希:

apples  
bananas  
oranges  
pineapples

结果为:

265f78fc274d8428fd63dabc24400cb4  
63a63ddf49984e0f1cef336aeb6ca39c  
229b1cc78a248c6cea47fa95565dc9ca  
019b111ec0c13ed923922715bfb1670a  

但是我应该得到:

daeccf0ad3c1fc8c8015205c332f5b42  
ec121ff80513ae58ed478d5c5787075b  
91b07b3169d8a7cb6de940142187c8df  
019b111ec0c13ed923922715bfb1670a  

2 个答案:

答案 0 :(得分:2)

输入字符串中的行用\r\n分隔,但是在服务器上PHP_EOL设置为\n。因此,当您将输入分为几行时,除了最后一行,每行的末尾都有一个\recho md5("apples\r");产生265f78fc274d8428fd63dabc24400cb4

使用trim()删除多余的空格。

$content .= md5(trim($ids[$i])).'<br>';

答案 1 :(得分:0)

您的输入数据中包含空格。而且不要在内存中收集所有超过50k的哈希。
试试这个

<?php  
if(isset($_POST['btn'])){
    $value=$_POST['text'];
    $ids = explode(PHP_EOL, $value);
    for ($i=0;$i<count($ids);$i++){
        echo nl2br(md5(trim($ids[$i])));
    }
}
?>