我正在用JAVA和PHP编程。我有一个字符串比较的问题。实际上根据JAVA,两个相同的字符串(在我看来)并不相同。
问题背景:
我使用$userid_hash = sha1($row["profileId"].'helloworld');
设置了一个Cookie
与$userid = $row["profileId"]
一起。这样做是为了防止用户访问另一个帐户。
现在的问题是我有一些用JAVA编写的服务器代码,用于散列userid
并将其与userid_hash
进行比较。我在控制台中打印出来。两个字符串都相同。
但问题是,如果有任何欺诈企图,我已将其余代码包含在if语句中。根据我在Eclipse中的控制台,java将字符串解释为不一样,即使它们是。可能是这个问题的根源是什么?
我正在使用它作为我的SHA1哈希Syntax wrong with my SHA1 code。我用"somestring".getBytes("UTF-8");
来称呼它。我的MySQL数据库是UTF-8编码的,我在Eclipse中输入的任何字符串也都是UTF-8编码的。我做错了什么?我该如何找到问题?
修改
这是比较前java中的println语句:
ab968f939a4869339b5cdb611674bdf4954f2f6a ab968f939a4869339b5cdb611674bdf4954f2f6a
修改
如果声明:
if(packageName.toSHA1((profileId+"secret").getBytes("UTF-8")) == profileId_ver)
答案 0 :(得分:12)
您使用的是.equals()而不是==吗? ==对于字符串测试它们位于内存中的同一位置,而.equals()检查它们是否由相同的字符序列组成(这就是你想要的)。
好:
if(string1.equals(string2))
为:
if(string1 == string2)