序列号生成-模拟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,售后保障稳定

 

 

 

 

 

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 【百度之星2014~资格赛解题报告】「建议收藏」

    【百度之星2014~资格赛解题报告】

  • PLSQL 基础教程 三 查询(SELECT)

    PLSQL 基础教程 三 查询(SELECT)本节教程将继续介绍SQL基础知识中的SELECT相关的一些知识,包括基础语法、多表连接、去重、排序、子查询等等SELECT方面的基础知识。SELECT是SQL中使用的比较多的,主要是用于筛选数据,获取满足某些条件的数据,既可以是单条数据,也可以是多条数据,还可以是统计数据或者分组数据等等,后续教程将会一一介绍。

  • 电子签名的制作和使用方法_如何使用电子签名

    电子签名的制作和使用方法_如何使用电子签名电子签名的制作和使用一、在Word文档中插入手写签名生成电子签名1、准备好签名图片。2、用Word打开需要签名的文件,点菜单中的“插入>插图>图片”来选择已经写好的签名图片,插入后可以调整图片大小。3、点击菜单“格式>颜色>黑白”。4、点击菜单“格式>颜色>重新着色>设置透明色”,鼠标变成一支笔后,点图片中白色部分,这样就自动把白底抠除了,设置图片格式为“浮于文字上方”,最后拖动图片到签字处,调整大小即可。相关链接一、在Word文档中插入手写签名生成电子签名1、

    2022年10月16日
  • sqrt mysql_MySQL中的SQRT函数的使用方法「建议收藏」

    sqrt mysql_MySQL中的SQRT函数的使用方法「建议收藏」推荐:MySQL中的SUM函数使用教程这篇文章主要介绍了MySQL中的SUM函数使用教程,是MySQL入门学习中的基础知识,需要的朋友可以参考下MySQL的SUM函数是用来找出记录中各种的字段的总和。要了解SUM函数考虑EMPLOYEE_TBL表具有以下记录:?现在,假设根据上面的表想来计算所有的dialy_typing_pages的总数这篇文章主要介绍了详解MySQL中的SQRT函数的使…

  • oracle number类型null值的大小验证[通俗易懂]

    oracle number类型null值的大小验证[通俗易懂]oraclenumber类型null值的大小验证

  • 视频目标检测识别

    视频目标检测识别之前文章目标检测API已经介绍过API的基本使用,这里就不赘述了,直接上本次内容的代码了,添加的内容并不多。将测试的test.mp4原文件放到models-master\research\object_detection路径下,并创建一个detect_video.py文件,代码内容如下:importosimportcv2importtimeimportargparseim…

发表回复

您的电子邮箱地址不会被公开。

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