import java.util.List;
 import java.util.Objects;
 import java.util.stream.Collectors;
+import org.apache.commons.codec.binary.Base64;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.tinkerpop.gremlin.structure.Edge;
     }
 
     private String decryptUserId(final String userId) {
-        if (StringUtils.isNotEmpty(userId)) {
+        if (StringUtils.isNotEmpty(userId) && isUserBase64Encoded(userId)) {
             try {
                 return CipherUtil.decryptPKC(userId);
             } catch (final Exception e) {
         return userId;
     }
 
+    boolean isUserBase64Encoded(String userId){
+        try {
+            byte[] decodedUserId = Base64.decodeBase64(userId.getBytes());
+            byte[] reEncodedUserId = Base64.encodeBase64(decodedUserId);
+            return userId.equals(new String(reEncodedUserId));
+        } catch (Exception e) {
+            return false;
+        }
+    }
+
     public User getUser(String userId) {
         userId = decryptUserId(userId);
         UserContext userContext = ThreadLocalsHolder.getUserContext();
 
             ThreadLocalsHolder.setUserContext(originalUserContext);
         }
     }
+
+    @Test
+    public void testIsUserBase64EncodedTrueUserIdBase64Encoded() {
+        String userId = "bW9jaw==";
+        assertThat(testSubject.isUserBase64Encoded(userId)).isTrue();
+    }
+
+    @Test
+    public void testIsUserBase64EncodedFalseUserIdNotBase64Encoded() {
+        String userId = "mockId";
+        assertThat(testSubject.isUserBase64Encoded(userId)).isFalse();
+    }
+
+    @Test
+    public void testIsUserBase64EncodedFalseUserIdIsNull() {
+        assertThat(testSubject.isUserBase64Encoded(null)).isFalse();
+    }
+
+    @Test
+    public void testIsUserBase64EncodedFalseInvalidBase64Characters() {
+        String userId = "%not£valid*";
+        assertThat(testSubject.isUserBase64Encoded(userId)).isFalse();
+    }
 }