我面临着一个奇怪的问题,它与Java和php5中的MD5-Hashes有关.我认为在某些情况下,以下代码不会生成正确的MD5哈希值:
public static String getMD5Hash(String string)
{
try
{
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(string.getBytes());
byte[] digest = md5.digest();
string = byteArrToHexString(digest);
}
catch (NoSuchAlgorithmException e1)
{
e1.printStackTrace();
}
return string;
}
private static String byteArrToHexString(byte[] bArr)
{
StringBuffer sb = new StringBuffer();
for (int i = 0; i < bArr.length; i++)
{
int unsigned = bArr[i] & 0xff;
sb.append(Integer.toHexString((unsigned)));
}
return sb.toString();
}
Run Code Online (Sandbox Code Playgroud)
我不得不迁移现有的用户数据库,其中密码存储在php5 MD5中.现在,一些用户(不是所有用户)无法登录,因为我的Java代码没有生成正确的MD5哈希.
任何想法上面有什么问题?
laa*_*lto 10
byteArrToHexString 没有正确转换字节<0x10,你需要用零填充它们.
例:
int unsigned = bArr[i] & 0xff;
if (unsigned < 0x10)
sb.append("0");
sb.append(Integer.toHexString((unsigned)));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3007 次 |
| 最近记录: |