最代码

1187163927的gravatar头像
11871639272018-04-28 15:06:31

java自定义加密算法

java实现的自定义算法

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author dpchenh
 */
public class MyRandom extends Thread {

    @Override
    public void run() {
        // 没隔一秒生成一个随机字符串:该字符串包含2个数字 5个小写字母 5个大写字母 1个特殊字符 前13位为字符位,后面位数为校验位
        while (true) {
            String a = "0123456789";                    // 数字
            String b = "abcdefghijklmnopqrstuvwxyz";    // 小写字母
            String c = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";    // 大写字母
            String d = "~!@#$%^&*()_+=<>/,./;'[]{}|\\"; // 特殊字符
            String result = "";
            // 加密算法 获取随机数
            result = result + getRandomString(a, 2); // 数字
            result = result + getRandomString(b, 5); // 小写字母
            result = result + getRandomString(c, 5); // 大写字母
            result = result + getRandomString(d, 1); // 特殊字符
            result = UnSort(result);  // 将字母顺序打乱
            result = ProCheck(result);

            Calendar calendar = Calendar.getInstance();  // 当前时间
            System.err.println(calendar.getTime() + ":" + result);
            try {
                sleep(1000);
            } catch (InterruptedException ex) {
                Logger.getLogger(MyRandom.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    }

    /**
     *
     * @param str 传递一个字符串
     * @param length 传出字符串的长度
     * @return 随机传出一个指定长度的子字符串
     *
     */
    public static String getRandomString(String str, int length) {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < length; i++) {
            int number = random.nextInt(str.length());
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    /**
     *
     * @param str 传递一个字符串
     * @return 随机将传入的子字符串乱序后输出
     *
     */
    public static String UnSort(String str) {
        List<String> lists = new ArrayList<>();
        Random random = new Random();
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            lists.add(str.substring(i, i + 1));
        }
        while (!lists.isEmpty()) {
            int number = random.nextInt(lists.size());
            sb.append(lists.get(number));
            lists.remove(number);
        }
        return sb.toString();
    }

    /**
     *
     * @输入参数:传递一个字符串
     * @输出参数:在该字符串最后加上字符的ASCII累加和校验
     *
     */
    private String ProCheck(String str) {
        int sum = 0;
        for (int i = 0; i < str.length(); i++) {
            sum = sum + (int) str.charAt(i);
        }
        return str + sum;
    }

    public static void main(String[] args) {
        MyRandom random = new MyRandom();
        random.start();
    }
}

2.运行截图

java自定义加密算法


打赏

顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友