序列号生成-模拟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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • onbeforeunload事件_pageload事件何时触发

    onbeforeunload事件_pageload事件何时触发beforeunload事件简介当窗口,文档及其资源即将卸载时,将触发该事件。该文档仍然可见,此时事件仍可取消。如果为returnValueEvent属性分配了一个字符串,则会出现一个对话框,要求用户确认离开该页面(参见下面的示例)。IE浏览器在对话框中显示返回的字符串,但其他浏览器会显示自己的消息。如果未提供任何值,则以静默方式处理事件。注意:为了防止不需要…

    2022年10月22日
    0
  • goland2021 破解激活码[在线序列号]

    goland2021 破解激活码[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月18日
    262
  • 0 full gc时cpu idle_【cpuidle】计算每个cpu进入idle的时间

    0 full gc时cpu idle_【cpuidle】计算每个cpu进入idle的时间参考内核文档 Supportingmu sys devices system cpu cpuidleThecu

    2025年6月9日
    0
  • spssχ2检验_一致性检验和配对卡方检验的SPSS实例操作图文详解[通俗易懂]

    spssχ2检验_一致性检验和配对卡方检验的SPSS实例操作图文详解[通俗易懂]一致性检验和配对卡方检验的SPSS实例操作图文详解,配对计数资料的卡方检验。一、问题与数据有两种方法可用于诊断某种癌症,A方法简单易行,成本低,患者更容易接受,B方法结果可靠,但操作繁琐,患者配合困难。某研究选择了53例待诊断的门诊患者,每个患者分别用A和B两种方法进行诊断(表1),判断两种方法诊断癌症有无差别,A方法是否可以代替B方法。表1进口药和国产药治疗效果二、对数据结构的分析之前介绍过成…

    2022年5月17日
    40
  • windows nslookup命令详解_nslookup unknown

    windows nslookup命令详解_nslookup unknown1问题今天是特别傻逼,既然问了一个很愚蠢的问题,登录后台需要相关的ip,但是我只有域名,这么太突然来,我既然不知道用nslookup命令,好吧,先记录起来,希望下次不要犯这样的傻逼错误2查看电脑的所有配置在windowd终端输入如下命令ifconfig/all3nslookup正向查找(通过域名找对于的i…

    2022年10月19日
    0
  • HttpClient 4 和 HttpClient 3 设置超时

    HttpClient 4 和 HttpClient 3 设置超时HttpClient4:连接超时:httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT,60000);//或者HttpConnectionParams.setConnectionTimeout(params,6000);

    2022年7月22日
    10

发表回复

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

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