Вы находитесь на странице: 1из 6

import java.io.

PrintStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.StringTokenizer;
public class LicGen
{
public static List<String> oldcodes(String[] args)
{
List<String> codes = new ArrayList();
if (args.length < 3)
{
System.out.println("Usage: LicenseGenerator id exp-date (where id is a 3 d
igit number and the exp-date form is yyyy-mm-dd) coa|hex|dun [+]");
System.exit(0);
}
Calendar c = Calendar.getInstance();
StringTokenizer st = new StringTokenizer(args[1], "-");
int year = Integer.parseInt(st.nextToken());
int month = Integer.parseInt(st.nextToken()) - 1;
int date = Integer.parseInt(st.nextToken());
c.set(year, month, date);
year = c.get(1);
int days = 0;
for (int i = 2000; i < year; i++)
{
days += 365;
if (year % 4 == 0) {
days++;
}
}
days += c.get(6);
String daystring = "" + days;
int count = 1;
count = Integer.parseInt(args[3]);
for (int i = 0; i < count; i++)
{
int six = (int)(Math.random() * 10.0D);
int seven = (int)(Math.random() * 10.0D);
int nine = (int)(Math.random() * 10.0D);
int ten = (int)(Math.random() * 10.0D);
int eleven = (int)(Math.random() * 10.0D);
if (count != 1) {
eleven = i % 10;
}
int twelve = (int)(Math.random() * 10.0D);
if (count != 1) {
twelve = i / 10;
}
int checksum = Integer.parseInt("" + args[0].charAt(0)) + Integer.parseInt
("" + args[0].charAt(1)) + Integer.parseInt("" + daystring.charAt(0)) + Integer.
parseInt("" + args[0].charAt(2)) + Integer.parseInt("" + daystring.charAt(1)) +
six + seven + Integer.parseInt("" + daystring.charAt(2)) + nine + ten + eleven +
twelve;
if (checksum > 90)
{
System.out.println("Checksum was over 90. Try again.");
System.exit(0);
}
int checksum2 = 0;
if (args[2].equals("coa"))
{
checksum2 = checksum;
}
else if ((args[2].equals("hex")) || (args[2].equals("dun")))
{
checksum2 = checksum + checksum % 10;
}
else
{
System.err.println("Invalid license type.");
System.exit(-1);
}
String slicense = "" + args[0].charAt(0) + args[0].charAt(1) + daystring.c
harAt(0) + args[0].charAt(2) + daystring.charAt(1) + six + seven + daystring.cha
rAt(2) + nine + ten + eleven + twelve + checksum + checksum2;
if (args[2].equals("dun")) {
slicense = "" + args[0].charAt(0) + args[0].charAt(1) + daystring.charAt
(0) + args[0].charAt(2) + daystring.charAt(1) + six + seven + daystring.charAt(2
) + checksum + checksum2 + nine + ten + eleven + twelve;
}
codes.add("" + slicense);
}
return codes;
}
public static boolean checkDates(String s)
{
if ((s == null) || (s.length() < 8)) {
return false;
}
s = s.toUpperCase();
s = s.replace("-", "");
int value1 = 0;
for (int i = 1; i < 4; i++)
{
char c = s.charAt(i);
if (c != '-') {
if ((c >= '0') && (c <= '9')) {
value1 += c - '0';
} else {
value1 += c - 'A' + 10;
}
}
}
int checksum1 = value1 % 36;
int value2 = 0;
for (int i = 5; i < s.length(); i++)
{
char c = s.charAt(i);
if (c != '-') {
if ((c >= '0') && (c <= '9')) {
value2 += c - '0';
} else {
value2 += c - 'A' + 10;
}
}
}
int checksum2 = value2 % 36;
long val1 = 0L;
char c = s.charAt(0);
if ((c >= '0') && (c <= '9')) {
val1 = c - '0';
} else {
val1 = c - 'A' + 10;
}
long val2 = 0L;
c = s.charAt(4);
if ((c >= '0') && (c <= '9')) {
val2 = c - '0';
} else {
val2 = c - 'A' + 10;
}
if ((val1 == checksum1) && (val2 == checksum2)) {
return true;
}
return false;
}
private static char convertToChar(int ran)
{
if (ran == 0) {
return '0';
}
if (ran == 1) {
return '1';
}
if (ran == 2) {
return '2';
}
if (ran == 3) {
return '3';
}
if (ran == 4) {
return '4';
}
if (ran == 5) {
return '5';
}
if (ran == 6) {
return '6';
}
if (ran == 7) {
return '7';
}
if (ran == 8) {
return '8';
}
if (ran == 9) {
return '9';
}
if (ran == 10) {
return 'A';
}
if (ran == 11) {
return 'B';
}
if (ran == 12) {
return 'C';
}
if (ran == 13) {
return 'D';
}
if (ran == 14) {
return 'E';
}
if (ran == 15) {
return 'F';
}
if (ran == 16) {
return 'G';
}
if (ran == 17) {
return 'H';
}
if (ran == 18) {
return 'I';
}
if (ran == 19) {
return 'J';
}
if (ran == 20) {
return 'K';
}
if (ran == 21) {
return 'L';
}
if (ran == 22) {
return 'M';
}
if (ran == 23) {
return 'N';
}
if (ran == 24) {
return 'O';
}
if (ran == 25) {
return 'P';
}
if (ran == 26) {
return 'Q';
}
if (ran == 27) {
return 'R';
}
if (ran == 28) {
return 'S';
}
if (ran == 29) {
return 'T';
}
if (ran == 30) {
return 'U';
}
if (ran == 31) {
return 'V';
}
if (ran == 32) {
return 'W';
}
if (ran == 33) {
return 'X';
}
if (ran == 34) {
return 'Y';
}
if (ran == 35) {
return 'Z';
}
throw new IllegalArgumentException("Problem parsing key");
}
public static String genKey(String seed1, String seed2)
{
String s1 = "";
for (int i = 0; i < 2; i++)
{
int ran = (int)(Math.random() * 36.0D);
s1 = s1 + convertToChar(ran);
}
s1 = s1 + seed1;
int value1 = 0;
for (int i = 0; i < s1.length(); i++)
{
char c = s1.charAt(i);
if ((c >= '0') && (c <= '9')) {
value1 += c - '0';
} else {
value1 += c - 'A' + 10;
}
}
String s2 = "";
for (int i = 0; i < 2; i++)
{
int ran = (int)(Math.random() * 36.0D);
s2 = s2 + convertToChar(ran);
}
s2 = s2 + seed2;
int value2 = 0;
for (int i = 0; i < s2.length(); i++)
{
char c = s2.charAt(i);
if ((c >= '0') && (c <= '9')) {
value2 += c - '0';
} else {
value2 += c - 'A' + 10;
}
}
int checksum1 = value1 % 36;
int checksum2 = value2 % 36;
String s = convertToChar(checksum1) + s1 + "-" + convertToChar(checksum2) +
s2;
return s;
}
public static void main(String[] args)
{
if (args[0].equals("all"))
{
List<String> citycodes = new ArrayList();
for (int i = 0; i < Integer.parseInt(args[1]); i++) {
citycodes.add("Cityographer#:" + genKey(args[2], args[3]));
}
String[] dunargs = { args[4], args[5], "dun", args[1] };
List<String> duncodes = oldcodes(dunargs);
String[] hexargs = { args[6], args[7], "hex", args[1] };
List<String> hexcodes = oldcodes(hexargs);
for (int i = 0; i < citycodes.size(); i++) {
System.out.println((String)citycodes.get(i) + " Dungeonographer#:" + (St
ring)duncodes.get(i) + " Hexographer#:" + (String)hexcodes.get(i));
}
}
else
{
if (Integer.parseInt(args[0]) < 0) {
System.out.println("result:" + checkDates(args[1]));
}
if (args.length > 0) {
for (int i = 0; i < Integer.parseInt(args[0]); i++) {
System.out.println("License#:" + genKey(args[1], args[2]));
}
}
}
}
}

Вам также может понравиться