Same string but not the same at all
I'm programming both in JAVA and PHP. I got one problem with string comparison. Actually two strings that are the same (in my perspective) is not the same according to JAVA.
Background to problem:
I set a cookie using $userid_hash = sha1($row["profileId"].'helloworld');
along with $userid = $row["profileId"]
. This is done to p开发者_如何学运维revent a user from accessing another account.
The problem now is that I have some server code written in JAVA that is hashing the userid
and comparing it with userid_hash
. I print them out in the console. Both string is identical.
But the thing is I have wrapped the rest of the code around an if statement in case of any fraud attempts. And java is interpreting the strings as not the same, even though they is, according to my console in Eclipse. What can be the source of this problem?
I'm using this as my SHA1 hash Syntax wrong with my SHA1 code. I call it using "somestring".getBytes("UTF-8");
. And my MySQL database is UTF-8 encoded also any strings I enter in Eclipse is also UTF-8 encoded. What have I done wrong? How can I locate the problem?
EDIT:
This is the println statement in java before comparison:
ab968f939a4869339b5cdb611674bdf4954f2f6a ab968f939a4869339b5cdb611674bdf4954f2f6a
EDIT:
If statement:
if(packageName.toSHA1((profileId+"secret").getBytes("UTF-8")) == profileId_ver)
Are you using .equals() instead of ==? == for strings tests that they're at the same location in memory, whereas .equals() checks that they're made of the same sequence of characters (which is what you'd want here).
Good:
if(string1.equals(string2))
Bad:
if(string1 == string2)
精彩评论