【发布时间】:2011-03-01 19:23:42
【问题描述】:
我同时使用 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)
【问题讨论】:
-
你的 if 语句是什么样的?您是否使用 equalsIgnoreCase 进行比较?
-
您还没有共享任何代码,因此很难提供帮助。 “我有问题,有什么办法?”没有帮助...您是否正确比较了字符串?不要使用
==,而是使用.equals()