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