admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/util/TokenUtil.java
@@ -1,63 +1,63 @@
package com.yeshi.fanli.util;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 口令工具
 *
 * @author Administrator
 *
 */
public class TokenUtil {
   private static String convert10To62(Long num) {
      String numbers = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
      BigDecimal numBig = new BigDecimal(num);
      int ge = numBig.divideAndRemainder(new BigDecimal(numbers.length()))[1].intValue();
      int n = 1;
      String result = "";
      result += numbers.charAt(ge);
      while (numBig.divideAndRemainder(new BigDecimal(numbers.length()).pow(n))[0].compareTo(new BigDecimal(0)) > 0) {
         int w = numBig.divideAndRemainder(new BigDecimal(numbers.length()).pow(n))[0]
               .divideAndRemainder(new BigDecimal(numbers.length()))[1].intValue();
         result = numbers.charAt(w) + result;
         n++;
      }
      return result;
   }
   /**
    * 生成口令
    *
    * @param id
    * @return
    */
   public static String createToken(Long id) {// 生成口令
      long fid = 10000000000000L * ((int) (Math.random() * 1000) + 1) + id;
      return "&" + convert10To62(fid) + "&";
   }
   /**
    * 提取口令
    *
    * @param content
    * @return
    */
   public static String parseToken(String content) {
      String regex = "&[A-Za-z0-9]{6,10}&";
      Pattern pattern = Pattern.compile(regex);
      String source = content;
      Matcher matcher = pattern.matcher(source);
      while (matcher.find()) {
         String result = matcher.group(0);
         return result;
      }
      return null;
   }
}
package com.yeshi.fanli.util;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 口令工具
 *
 * @author Administrator
 *
 */
public class TokenUtil {
   private static String convert10To62(Long num) {
      String numbers = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
      BigDecimal numBig = new BigDecimal(num);
      int ge = numBig.divideAndRemainder(new BigDecimal(numbers.length()))[1].intValue();
      int n = 1;
      String result = "";
      result += numbers.charAt(ge);
      while (numBig.divideAndRemainder(new BigDecimal(numbers.length()).pow(n))[0].compareTo(new BigDecimal(0)) > 0) {
         int w = numBig.divideAndRemainder(new BigDecimal(numbers.length()).pow(n))[0]
               .divideAndRemainder(new BigDecimal(numbers.length()))[1].intValue();
         result = numbers.charAt(w) + result;
         n++;
      }
      return result;
   }
   /**
    * 生成口令
    *
    * @param id
    * @return
    */
   public static String createToken(Long id) {// 生成口令
      long fid = 10000000000000L * ((int) (Math.random() * 1000) + 1) + id;
      return "&" + convert10To62(fid) + "&";
   }
   /**
    * 提取口令
    *
    * @param content
    * @return
    */
   public static String parseToken(String content) {
      String regex = "&[A-Za-z0-9]{6,10}&";
      Pattern pattern = Pattern.compile(regex);
      String source = content;
      Matcher matcher = pattern.matcher(source);
      while (matcher.find()) {
         String result = matcher.group(0);
         return result;
      }
      return null;
   }
}