admin
2019-08-20 86715eed2638114a8afaed7e44ccdd7a2051bb1a
口令生成
1个文件已添加
63 ■■■■■ 已修改文件
fanli/src/main/java/com/yeshi/fanli/util/TokenUtil.java 63 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
fanli/src/main/java/com/yeshi/fanli/util/TokenUtil.java
New file
@@ -0,0 +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;
    }
}