簡體   English   中英

例如,不同意相同字符串的md5散列

[英]disagreeing md5 hashes of same string, with example

這讓我發瘋,我的md5不同意。 我有這個字符串:

組合生成器是一個工具,通過選擇相關屬性,您可以輕松創建一系列組合。 例如,如果您要出售三種不同尺寸和兩種不同顏色的T恤,則生成器將為您創建六個組合。

當我使用md5函數(使用php 5.5.0)在計算機上對它進行哈希處理時,會產生以下哈希值:422f3f656e1a5f95e8b5cf7565d815b5

http://www.miraclesalad.com/webtools/md5.php同意我的計算機的結果。

http://www.md5.cz/不同意我的計算機和miraclesalad。

此字符串/ md5對最初是由另一台計算機計算的,該計算機也給出了與md5.cz相同的結果。

我讀到了有關編碼的問題(盡管字符串不包含任何非ASCII字符),所以我在計算機上嘗試了以下代碼:

<?php

$str = "The Combinations Generator is a tool that allows you to easily create a series of combinations by selecting the related attributes. For example, if you're selling t-shirts in three different sizes and two different colors, the generator will create six combinations for you.";

echo "$str<BR/>";
echo md5($str)."<BR/>";
echo md5(utf8_encode($str))."<BR/>";
echo md5(utf8_decode($str))."<BR/>";


die();

輸出為:

組合生成器是一個工具,通過選擇相關屬性,您可以輕松創建一系列組合。 例如,如果您要出售三種不同尺寸和兩種不同顏色的T恤,則生成器將為您創建六個組合。

422f3f656e1a5f95e8b5cf7565d815b5

422f3f656e1a5f95e8b5cf7565d815b5

422f3f656e1a5f95e8b5cf7565d815b5

因此,它與utf8無關。

知道發生了什么事嗎?

我最好的猜測是,它與單詞“ you're”中的'標記和字符編碼有關。 如果刪除該引號,則兩個站點都報告相同的md5。

我嘗試將上面的字符串遞增地輸入到您在問題中鏈接到的兩個站點,結果發現,如果您要出售T恤,則打破md5.cz生成器的字符就是撇號。

如果在將特殊字符的字符串提供給哈希之前將其去除,並可能使用urlencode()這樣的字符串來保留字符串的唯一性,則應該為任何字符串獲取匹配的哈希。

字符串必須完全相同,包括空格。 這些網站可能正在使用某些修飾,例如trim()或stripslashes()。 僅當字符串正確時,md5才會返回相同的值。

md5是md5。 這里的所有都是它的。 如果您從不同的(非越野車)實現中獲得不同的哈希值,那么您將輸入不同的輸入。 請記住,如果輸入甚至略有不同,則md5被設計為產生截然不同的輸出。 測試字符串之一末尾的單個空格字符(制表符,換行符等)將完全破壞您期望的哈希,因為您輸入了不同的輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM