0
我有一个小问题,哈希用户名和密码。我需要找到一种方法来散列与java的数据作为服务器用mysql.Here是一个MySQL散列:Android Sha1哈希用户名和密码没有正确哈希
,我试图得到同样的结果在Java中是这样的:
String userName_input = txtUserName.getText().toString();
String password_input = txtPassword.getText().toString();
try {
String userName_hash;
String password_hash;
String username = SHA1.Sha1Hash(userName_input);
String password = SHA1.Sha1Hash(password_input);
String username1 = SHA1.Sha1Hash((username.concat(password)).substring(20, 35));
String password1 = SHA1.Sha1Hash((password.concat(username)).substring(10, 35));
userName_hash = SHA1.Sha1Hash(username1.concat(username));
password_hash = SHA1.Sha1Hash(password1.concat(password));
//THE RESULT WHICH SERVER RETURNS AND THE RESULT OF JAVA HASH
UsernameHash (fcd86e8cc9fc7596f102de7b2b922e80c6e6fac9) : dd1ed59ebab6c420d750046539fcb60e7a1f9162
PasswordHash (b66936348bd0bd44fa44f5ca7dcceb909545e47f) : cde70a6416e061d00b4247b73c54c73fee7116ab
但是使用这个SHA1代码,我得到的结果是不一样的在MySQL hash.I'm:
public class SHA1 {
private static String convertToHex(byte[] data) {
StringBuffer buf = new StringBuffer();
for (int i = 0; i < data.length; i++) {
int halfbyte = (data[i] >>> 4) & 0x0F;
int two_halfs = 0;
do {
if ((0 <= halfbyte) && (halfbyte <= 9))
buf.append((char) ('0' + halfbyte));
else
buf.append((char) ('a' + (halfbyte - 10)));
halfbyte = data[i] & 0x0F;
} while(two_halfs++ < 1);
}
return buf.toString();
}
public static String Sha1Hash(String text)
throws NoSuchAlgorithmException, UnsupportedEncodingException {
MessageDigest md;
md = MessageDigest.getInstance("SHA-1");
byte[] sha1hash = new byte[40];
md.update(text.getBytes("iso-8859-1"), 0, text.length());
sha1hash = md.digest();
return convertToHex(sha1hash);
}
}
任何想法/建议哪里是我的错误,以及如何使得哈希完全像在mysql中一样工作?
在此先感谢!