1. 程式人生 > >Java程式生成註冊碼

Java程式生成註冊碼

import java.io.*;
import java.text.*;
import java.util.Calendar;
import java.awt.datatransfer.*;

public class T {
  private void go() throws Exception {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    System.out.println("XXXclipse Cracker");
    System.out.print("Please Input User ID:");
    String userId = br.readLine();
    if (userId.length() == 0)
      return;
    String serialString = getSerial(userId, "200");
    System.out.println("Serial Code:" + serialString);
    java.awt.Toolkit.getDefaultToolkit().getSystemClipboard().setContents(
        new StringSelection(serialString), null);
    System.out
        .println("Note:The serial code has succefully copied into clipboard!/nPress 'Enter' to exit...");
    br.readLine();
  }

  public static void main(String args[]) throws Exception {
    new T().go();
  }
  public String getSerial(String userId, String licenseNum) {
    Calendar cal = Calendar.getInstance();
    cal.add(1, 3);
    cal.add(6, -1);
    NumberFormat nf = new DecimalFormat("000");
    licenseNum = nf.format(Integer.valueOf(licenseNum));
    String verTime = (new StringBuilder("-")).append(
        (new SimpleDateFormat("yyMMdd")).format(cal.getTime())).append("0").toString();
    String type = "YE3MP-";
    String need = (new StringBuilder(userId.substring(0, 1))).append(type).append("300").append(
        licenseNum).append(verTime).toString();
    String dx = (new StringBuilder(need))
        .append(
            "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (<A href="

http://www.loc.gov/copyright/legislation/dmca.pdf" target=_blank>http://www.loc.gov/copyright/legislation/dmca.pdf</A>). Under section 1204 of the DMCA, penalties range up to a $500,000 fine or up to five years imprisonment for a first offense. Think about it; pay for a license, avoid prosecution, and feel better about yourself.")
        .append(userId).toString();
    int suf = decode(dx);
    String code = (new StringBuilder(need)).append(String.valueOf(suf)).toString();
    return change(code);
  }

  private int decode(String s) {
    int i = 0;
    char ac[] = s.toCharArray();
    int j = 0;
    for (int k = ac.length; j < k; j++)
      i = 31 * i + ac[j];
    return Math.abs(i);
  }

  private String change(String s) {
    byte abyte0[] = s.getBytes();
    char ac[] = new char[s.length()];
    int i = 0;
    for (int k = abyte0.length; i < k; i++) {
      int j = abyte0[i];
      if (j >= 48 && j <= 57)
        j = ((j - 48) + 5) % 10 + 48;
      else if (j >= 65 && j <= 90)
        j = ((j - 65) + 13) % 26 + 65;
      else if (j >= 97 && j <= 122)
        j = ((j - 97) + 13) % 26 + 97;
      ac[i] = (char) j;
    }
    return String.valueOf(ac);
  }
}