/**
   * 加密 Token对象 如果加密后的加密串要用于 URL 进行传递,那么就必须
   *
   * @param token
   * @return
   */
  public String buildToken(OauthToken token) {
    StringBuffer sb = new StringBuffer();
    String split =
        this.findSplit(StringUtils.join(new String[] {token.getUsername(), token.getPassword()}));
    sb.append(System.currentTimeMillis())
        .append(split)
        .append(token.getUsername())
        .append(split)
        .append(token.getPassword());

    return desEncrypt.encrypt(sb.toString(), ENCRYPT_KEY);
  }
 /**
  * 根据 token 串解密出 OauthToken 对象
  *
  * @param token
  * @return
  */
 public OauthToken parseToken(String token) {
   String deToken = desEncrypt.decrypt(token, ENCRYPT_KEY);
   if (deToken == null) return null;
   String[] tokens = this.findSplitsToken(deToken);
   if (tokens != null && tokens.length == 3) {
     OauthToken oauthToken = new OauthToken();
     oauthToken.setUsername(tokens[1]);
     oauthToken.setPassword(tokens[2]);
     try { // token时间限制,半小时
       long time = Long.parseLong(tokens[0]);
       if ((System.currentTimeMillis() - time) > 1800000) {
         logger.error("令牌已超时");
         return null;
       }
     } catch (NumberFormatException e) {
       return null;
     }
     return oauthToken;
   } else {
     logger.error("令牌已超时");
   }
   return null;
 }