我正在嘗試創建一個可以 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 回答

千萬里不及你
TA貢獻1784條經驗 獲得超9個贊
輸入字符串中的行由 分隔\r\n
,但在您的服務器PHP_EOL
上設置為\n
。因此,當您將輸入分成幾\r
行時,除了最后一行之外,每一行的末尾都有一個。echo md5("apples\r");
產生265f78fc274d8428fd63dabc24400cb4
.
使用trim()
刪除多余的空格。
$content .= md5(trim($ids[$i])).'<br>';

Cats萌萌
TA貢獻1805條經驗 獲得超9個贊
您的輸入數據中有空格。并且不要在內存中收集所有 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])));
}
}
?>
- 2 回答
- 0 關注
- 170 瀏覽
添加回答
舉報
0/150
提交
取消