From 2edac96df31a0ffab822b1a1559bc1b6b0a255b1 Mon Sep 17 00:00:00 2001 From: "Mark H. Wood" Date: Wed, 1 Aug 2012 10:55:22 -0400 Subject: [PATCH] Update old MD5 hashes on successful password check --- .../src/main/java/org/dspace/eperson/EPerson.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/dspace-api/src/main/java/org/dspace/eperson/EPerson.java b/dspace-api/src/main/java/org/dspace/eperson/EPerson.java index 1a179b0d4a..babc309423 100644 --- a/dspace-api/src/main/java/org/dspace/eperson/EPerson.java +++ b/dspace-api/src/main/java/org/dspace/eperson/EPerson.java @@ -908,7 +908,8 @@ public class EPerson extends DSpaceObject } /** - * Check EPerson's password + * Check EPerson's password. Side effect: original unsalted MD5 hashes are + * converted using the current algorithm. * * @param attempt * the password attempt @@ -928,7 +929,13 @@ public class EPerson extends DSpaceObject log.error(ex.getMessage()); return false; } - return myHash.matches(attempt); + boolean answer = myHash.matches(attempt); + + // If using the old unsalted hash, and this password is correct, update to a new hash + if (answer && (null == myRow.getStringColumn("digest_algorithm"))) + setPassword(attempt); + + return answer; } /**