序列号生成-模拟windows office序列号[通俗易懂]

序列号生成-模拟windows office序列号[通俗易懂]最近看到office2013在提示过期问题(升级win10后遗症),就想到模拟下office的激活码。~~起初想到应该简单,最后越试越复杂。所以就记录下,毕竟花费了时间。packagetest;importjava.util.ArrayList;importjava.util.List;importjava.util.Random;publicclas

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

最近看到office2013在提示过期问题(升级win10后遗症),就想到模拟下office的激活码。~~

 

起初想到应该简单,最后越试越复杂。所以就记录下,毕竟花费了时间。

 

 

package test;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class SerialNum {

	//随机器,随机次数和符号等。
	private static Random r = new Random();
	
	//定义一些数字取值范围过滤,避免数字字母看起来混淆的问题,还有,避免暴力全遍历的问题。
	private static List<Integer> numFilter = new ArrayList<>();

	//定义一些字符取值范围过滤
	private static List<Integer> charFilter = new ArrayList<>();

	//初始化
	static {
		numFilter.add(0);
		numFilter.add(1);
		numFilter.add(5);

		charFilter.add(97);// a
		charFilter.add(65);
		charFilter.add(101);// e
		charFilter.add(69);
		charFilter.add(105);// i
		charFilter.add(73);
		charFilter.add(108);// l
		charFilter.add(76);
		charFilter.add(111);// o
		charFilter.add(79);
		charFilter.add(115);// s
		charFilter.add(83);
		charFilter.add(117);// u
		charFilter.add(85);
		charFilter.add(122);// z
		charFilter.add(90);
	}

	//main函数,批量生成多组
	public static void main(String[] args) {
		int i = 0;
		while (i < 10) {
			outSerialNum(5,5);
			i++;
		}
	}

	//获取一组序列,入参为序列有几组,每组长度为几
	private static void outSerialNum(int group,int len) {
		long start = System.currentTimeMillis();

		StringBuilder s = new StringBuilder();

		// 以随机串的分组数量为单位,获取每组的串
		for (int i = 0; i < group; i++) {
			// 传入每组串的长度
			s.append(getRandomStr(len) + "-");
		}
		System.out.println(s.toString().substring(0, s.length()-1));
		System.out.println("cost:" + (System.currentTimeMillis() - start));
	}

	// 获取一组长度为n的随机数字字母串
	private static String getRandomStr(int len) {
		StringBuilder sb = new StringBuilder();
		String[] unit = new String[len];
		// 随机出数字和字母出现的次数,保证数字和字母至少出现一次
		int numCount = r.nextInt(len);
		if (numCount == 0) {
			numCount = 1;
		}
		int charCount = len - numCount;

		// System.out.println("numCount=" + numCount + "; charCount=" +
		// charCount);

		// 获取二者中出现次数多的类型,优先随机插入数组
		int max = numCount;
		int flag = 0;// 表示数字类型
		if (charCount > numCount) {
			max = charCount;
			flag = 1;// 字母
		}

		// 优先随机位置插入出现次数多的类型
		for (int i = 0; i < max; i++) {
			int f = r.nextInt(len);
			if (flag == 0) {
				unit[f] = String.valueOf(getNum());
			} else {
				unit[f] = String.valueOf(getChar());
			}
		}

		// System.out.println("优先插入次数多的类型后:" + getArrayString(unit));

		// 遍历数组,如果不为空,加入已经存在的字符串;为空,字符串填充另一种类型
		for (String s : unit) {
			if (null == s) {
				// 与第一次插入采用相反的类型
				if (flag == 0) {
					sb.append(String.valueOf(getChar()));
				} else {
					sb.append(String.valueOf(getNum()));
				}
			} else {
				sb.append(s);
			}
		}
		return sb.toString();
	}

	private static int getNum() {
		int n = r.nextInt(10);
		return numFilter.contains(n) ? getNum() : n;// 不能在数字过滤器中
	}

	private static char getChar() {
		int c = r.nextInt(26) + 97;
		// 不能在字符过滤器中
		return charFilter.contains(c) ? getChar() : (char) c;
	}

}

Jetbrains全家桶1年46,售后保障稳定

 

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/200781.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • idea2021.3激活吗 30 天破解方法

    idea2021.3激活吗 30 天破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月15日
    146
  • android系统开机画面_Android开机画面

    android系统开机画面_Android开机画面制作android开机画面AndroidSplashScreenisthefirstscreenvisibletotheuserwhentheapplication’slaunched.Splashscreenisoneofthemostvitalscreensintheapplicationsinceit’stheuser’sfirs…

    2022年5月14日
    35
  • navicat15永久激活码最新【中文破解版】[通俗易懂]

    (navicat15永久激活码最新)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~V…

    2022年3月22日
    93
  • NTP协议详解_ntp是安全协议吗

    NTP协议详解_ntp是安全协议吗前言NTP(NetworkTimeProtocol)网络时间协议基于UDP,用于网络时间同步的协议,使网络中的计算机时钟同步到UTC,再配合各个时区的偏移调整就能实现精准同步对时功能。提供NTP对时的服务器有很多,比如微软的NTP对时服务器,利用NTP服务器提供的对时功能,可以使我们的设备时钟系统能够正确运行。NTP报文格式NTP报文格式如上图所示,它的字段含义参考如下:L…

    2022年10月12日
    2
  • 在宝塔上配置阿里SSL证书流程[通俗易懂]

    在宝塔上配置阿里SSL证书流程[通俗易懂]1.在阿里申请SSL证书2.下载申请好的ssl证书3.在宝塔上找到ssl4.复制证书安装顺序复制用文本打开.key文件复制里面的内容到左侧秘钥(key)用文本打开_public.crt文件复制里面的内容到右侧证书(pem)格式用文本打开_chain.crt文件复制里面的内容到右侧证书(pem)格式5.部署部署成功…

    2022年10月4日
    4
  • Java知识体系最强总结(2021版)[通俗易懂]

    更新于2019-12-1510:38:00本人从事Java开发已多年,平时有记录问题解决方案和总结知识点的习惯,整理了一些有关Java的知识体系,这不是最终版,会不定期的更新。也算是记录自己在从事编程工作的成长足迹,通过博客可以促进博主与阅读者的共同进步,结交更多志同道合的朋友。特此分享给大家,本人见识有限,写的博客难免有错误或者疏忽的地方,还望各位大佬指点,在此表示感激不尽。文章目录…

    2022年4月6日
    49

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号