diff --git a/core/java/src/net/i2p/util/PasswordManager.java b/core/java/src/net/i2p/util/PasswordManager.java index 9e0a2ffaeb3ecac9fdbbfe03169fd73abbea191d..83176f7ccf5242995ce928c7fe62449d7d588884 100644 --- a/core/java/src/net/i2p/util/PasswordManager.java +++ b/core/java/src/net/i2p/util/PasswordManager.java @@ -161,14 +161,28 @@ public class PasswordManager { */ public static String md5Hex(String subrealm, String user, String pw) { String fullpw = user + ':' + subrealm + ':' + pw; + try { + byte[] data = fullpw.getBytes("ISO-8859-1"); + byte[] sum = md5Sum(data); + if (sum != null) + // adds leading zeros if necessary + return DataHelper.toString(sum); + } catch (UnsupportedEncodingException uee) {} + return null; + } + + /** + * Standard MD5 checksum + * + * @param data non-null + * @return 16 bytes, or null on error + */ + public static byte[] md5Sum(byte[] data) { try { MessageDigest md = MessageDigest.getInstance("MD5"); - md.update(fullpw.getBytes("ISO-8859-1")); - // adds leading zeros if necessary - return DataHelper.toString(md.digest()); - } catch (UnsupportedEncodingException uee) { - } catch (NoSuchAlgorithmException nsae) { - } + md.update(data); + return md.digest(); + } catch (NoSuchAlgorithmException nsae) {} return null; } }