相同的字符串但完全不相同

时间:2011-03-01 19:23:43

标签: java string-comparison

我正在用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)

1 个答案:

答案 0 :(得分:12)

您使用的是.equals()而不是==吗? ==对于字符串测试它们位于内存中的同一位置,而.equals()检查它们是否由相同的字符序列组成(这就是你想要的)。

好:

if(string1.equals(string2))

为:

if(string1 == string2)