我试图从我的php页面跨越md5函数来验证mysql上的一对数据列。
我已经加密的字符串的“HelloWorld”用PHP MD5功能,并试图将其与MYSQL MD5功能比较,但它不会工作。
我这样做是因为在数据库中有一对字符串“你好”和“世界”需要与我的PHP字符串进行比较,所以:从php md5字符串检查MySql中的字段
<?php
$str_a = "hello";
$str_b = "world";
$str_encrypted = md5 ($str_a.$str_b);
// note "first_col" is "hello" and "second_col" is "world"
$sql = "UPDATE `my_table` SET `checked_col` = '1' WHERE MD5(CONCAT(first_col,second_col)) = '$str_encrypted' LIMIT 1;";
$res = mysql_query ($sql) or die (mysql_error());
($res) ? print "true" : print "false";
?>
此代码返回我的不实,并且数据库没有更新列检查列,但不是mysql_error问题被返回。
请问md5 from php从MYSQL生成一个不同的MD5?
一个朋友写了一个类似的代码工作在同一个服务器上,但我没有太多的经验,看看那里的区别是
有人可以解释我在哪里,我错了?
谢谢!
不知道你的问题是什么,但我会选择一个更透明的调试手段。自己验证每个过程的各个部分,而不是假设事情按照您的预期工作。因此,首先输出$ str_a。$ str_b和CONCAT(first_col,second_col),并确保它们是相同的输入,如您所期望的那样。然后MD5他们两个,并在视觉上验证他们是否评估相同的事情......等等,这样你就可以按照预期的方式验证事情的每一步。 – 2009-11-19 16:51:07
谢谢,如果你认为查询应该工作,我会从头开始重新检查! – vitto 2009-11-19 16:58:56
P.S.我听说MD5现在几乎是一个破解的加密(至少如果你不种子散列或者你没有像md5(md5(md5('password'))))这样嵌套的md5调用,那么请记住,使用裸md5()函数调用可能比安全加密更适合清理数据存储,您可能需要使用其他方法。 – Kzqai 2009-11-19 17:02:12