diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index a5b7849..4d287eaa 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -80,7 +80,6 @@
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.ArraySet;
-import android.util.ByteStringUtils;
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
@@ -95,6 +94,8 @@
 
 import com.google.android.collect.Sets;
 
+import libcore.util.HexEncoding;
+
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FileNotFoundException;
@@ -109,7 +110,6 @@
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.Locale;
 import java.util.Map;
 import java.util.Set;
 import java.util.regex.Pattern;
@@ -2410,7 +2410,7 @@
             rand.nextBytes(keyBytes);
 
             // Convert to string for storage in settings table.
-            final String userKey = ByteStringUtils.toHexString(keyBytes);
+            final String userKey = HexEncoding.encodeToString(keyBytes, true /* upperCase */);
 
             // Store the key in the ssaid table.
             final SettingsState ssaidSettings = getSettingsLocked(SETTINGS_TYPE_SSAID, userId);
@@ -2440,13 +2440,16 @@
                 }
             }
             final String userKey = userKeySetting.getValue();
+            if (userKey == null || userKey.length() % 2 != 0) {
+                throw new IllegalStateException("User key invalid");
+            }
 
             // Convert the user's key back to a byte array.
-            final byte[] keyBytes = ByteStringUtils.fromHexToByteArray(userKey);
+            final byte[] keyBytes = HexEncoding.decode(userKey);
 
             // Validate that the key is of expected length.
             // Keys are currently 32 bytes, but were once 16 bytes during Android O development.
-            if (keyBytes == null || (keyBytes.length != 16 && keyBytes.length != 32)) {
+            if (keyBytes.length != 16 && keyBytes.length != 32) {
                 throw new IllegalStateException("User key invalid");
             }
 
@@ -2468,8 +2471,8 @@
             }
 
             // Convert result to a string for storage in settings table. Only want first 64 bits.
-            final String ssaid = ByteStringUtils.toHexString(m.doFinal()).substring(0, 16)
-                    .toLowerCase(Locale.US);
+            final String ssaid = HexEncoding.encodeToString(m.doFinal(), false /* upperCase */)
+                    .substring(0, 16);
 
             // Save the ssaid in the ssaid table.
             final String uid = Integer.toString(callingPkg.applicationInfo.uid);
