$myStr = $_GET['myStr'];
if ($myStr == md5($myStr)) echo "ok\n";
我知道在代碼中存在一種類型,但在我的測試中,我找不到滿足條件的輸入。是否可以找到滿足此條件的字符串?
$myStr = $_GET['myStr'];
if ($myStr == md5($myStr)) echo "ok\n";
我知道在代碼中存在一種類型,但在我的測試中,我找不到滿足條件的輸入。是否可以找到滿足此條件的字符串?
讓我們從頭開始。我會提供一個例子,以便我可以幫助你更好地理解。
在第一行,你有$myStr = $_GET['myStr'];
我只是假設你會得到這個變量從您的網址是這樣的:
http://localhost/md5Project.php?myStr=test
這將給你的變量$ myStr中值「測試」。
在你的if語句展望未來您有:
if ($myStr == md5($myStr)
因爲$myStr
值"test"
和md5($myStr)
值098f6bcd4621d373cade4e832627b4f6
所以基本上你比較兩個字符串與值"test"
和"098f6bcd4621d373cade4e832627b4f6problem"
這將永遠領導這個永遠不會爲真假。
不,您無法找到myStr
的值,因爲它會降低查找MD5的(第一級)前像。雖然MD5由於抗碰撞而被打破,但您不應該能夠找到預先圖像。更多信息here。
我假設那裏你的代碼等於找到y = md5(y)
。 y = md5(x)
是一個更一般的假設,在上面鏈接到的維基百科文章中描述,即使對於MD5,也不可能找到這樣的H(x)
。
這並不意味着你應該使用MD5。請使用SHA-256,SHA-512或其中一種SHA-3功能。即使MD5到目前爲止還沒有被打破,它已經被打破了,不再被使用; 「攻擊總是變得更好,他們永遠不會變得更糟。」
這是你只需要做一些研究的基本的東西 –
md5,在同一個標籤列表中的安全和加密是有點危險....這些天md5不應該用於任何與安全有關的事 –
Don'不明白你想要什麼。你在「md5($ myStr)」後忘記了一個「)」 –