Мои пароли зашифрованы в MD5 на C # и вставлены в мою БД.
MD5 MD5Hasher = MD5.Create();
byte[] PasswordHash = MD5Hasher.ComputeHash(Encoding.Unicode.GetBytes(PasswordText.Value));
PasswordHash вставлен как есть и выглядит как 0x09C09E5B52580E477514FA .......... *Например, 1005 *.
В приложении blackberry я получаю пароль, хочу закодировать его, чтобы передать его веб-службе, которая будет сравнивать оба хешированных пароля.Проблема в том, что мой результат отличается от MD5, который я создаю в своем приложении Blackberry.
password = Crypto.encodeStringMD5(password);
Тогда ниже моей функции:
public static String encodeStringMD5(String s) throws Exception {
byte[] bytes = s.getBytes();
MD5Digest digest = new MD5Digest();
digest.update(bytes, 0, bytes.length);
int length = digest.getDigestLength();
byte[] md5 = new byte[length];
digest.getDigest(md5, 0, true);
return convertToHex(md5);
}
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();
}
Так что он возвращает что-то вроде этого: 07054da3aea1cc98377fe0 ..........
Есть идеи, как получить тот же хешированный пароль, который я создаю с помощью своей функции C # в Blackberry?
Спасибо!