diff --git a/src/com/android/settings/password/ChooseLockPassword.java b/src/com/android/settings/password/ChooseLockPassword.java
index 14f7d6b..e60b4e6 100644
--- a/src/com/android/settings/password/ChooseLockPassword.java
+++ b/src/com/android/settings/password/ChooseLockPassword.java
@@ -193,6 +193,7 @@
         private int mPasswordMinLengthToFulfillAllPolicies = 0;
         protected int mUserId;
         private boolean mHideDrawer = false;
+        private byte[] mPasswordHistoryHashFactor;
         /**
          * Password requirements that we need to verify.
          */
@@ -667,7 +668,8 @@
                     }
                 }
                 // Is the password recently used?
-                if (mLockPatternUtils.checkPasswordHistory(password, mUserId)) {
+                if (mLockPatternUtils.checkPasswordHistory(password, getPasswordHistoryHashFactor(),
+                        mUserId)) {
                     errorCode |= RECENTLY_USED;
                 }
             }
@@ -730,6 +732,18 @@
             return errorCode;
         }
 
+        /**
+         * Lazily compute and return the history hash factor of the current user (mUserId), used for
+         * password history check.
+         */
+        private byte[] getPasswordHistoryHashFactor() {
+            if (mPasswordHistoryHashFactor == null) {
+                mPasswordHistoryHashFactor = mLockPatternUtils.getPasswordHistoryHashFactor(
+                        mCurrentPassword, mUserId);
+            }
+            return mPasswordHistoryHashFactor;
+        }
+
         public void handleNext() {
             if (mSaveAndFinishWorker != null) return;
             mChosenPassword = mPasswordEntry.getText().toString();
