public static LoginTokenInfo from(String loginToken) {
   try {
     return GsonWrapper.gson.fromJson(
         DES3.decrypt(Digest.MD5.getMessage(AppConfig.secretKey), loginToken),
         LoginTokenInfo.class);
   } catch (Exception e) {
     return null;
   }
 }
 public static String buildLoginToken(User user, Date expiresAt) {
   LoginTokenInfo loginTokenInfo = new LoginTokenInfo();
   loginTokenInfo.setUUID(UUID.randomUUID().toString());
   loginTokenInfo.setUserId(user.getId());
   loginTokenInfo.setPasswordMd5(user.getPasswordMd5());
   loginTokenInfo.setExpiresAt(expiresAt);
   try {
     return DES3.encrypt(
         Digest.MD5.getMessage(AppConfig.secretKey), GsonWrapper.gson.toJson(loginTokenInfo));
   } catch (Exception e) {
     return null;
   }
 }