$myStr = $_GET['myStr'];
if ($myStr == md5($myStr)) echo "ok\n";
我知道代码中有一种类型jugglying,但在我的测试中,我找不到满足条件的输入。
答案 0 :(得分:1)
不,你找不到col2
值,因为它会找到MD5的(第一度)预图像。尽管MD5因抗碰撞性而被破坏,但您应该无法找到预先映像。更多信息here。
我假设您的代码相当于找到df2
。 Sub CheckBox1_Click()
HideRows "2:5"
End Sub
Sub HideRows(rowRange)
If CheckBox1 = False Then
Rows(rowRange).EntireRow.Hidden = True
Else: Rows(rowRange).EntireRow.Hidden = False
End If
End Sub
是一个更普遍的假设,并且在上面链接的维基百科文章中描述了即使对于MD5也不可能找到这样的myStr
。
这并不意味着你应该使用MD5。请使用SHA-256,SHA-512或SHA-3功能之一。即使MD5还没有被打破,它已被打破,不再被使用了; "攻击总是变得更好;他们永远不会变得更糟。"
答案 1 :(得分:0)
让我们从头开始。我将提供一个例子,以便我可以帮助您理解更好。
在第一行中您有$myStr = $_GET['myStr'];
我将假设您将从您的网址获取此变量,如下所示:
http://localhost/md5Project.php?myStr=test
这将为您的变量$ myStr赋值“test”。
继续你的if语句:
if ($myStr == md5($myStr)
这永远不会成立,因为$myStr
值为"test"
且md5($myStr)
值为098f6bcd4621d373cade4e832627b4f6
所以基本上您将2个字符串与值"test"
和{{进行比较1}}这将永远导致错误。