02
2013
07

MyEclipse的注册码生成代码-MyEclipseKeyGen.java

MyEclipse8.0的注册码生成代码

MyEclipse7.5的注册码生成代码

MyEclipse7.0的注册码生成代码

MyEclipse6.5的注册码生成代码

MyEclipse6.0的注册码生成代码

...

package org.usc.key.gen;
                   
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
                   
/**
 * MyEclipse(8.0,7.5,7.0,6.5,6.0...)的注册码生成代码
 * 
 * 
 * @author ShunLi,ssjyblog.com
 * @Time 2009-12-25
 */
public class MyEclipseKeyGen
{
                   
        private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). 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.";
                   
        public MyEclipseKeyGen()
        {
        }
                   
        /**
         * 具体的Subscription Code生成算法
         * 
         * @param userId
         *            (Subscriber)
         * @param licenseNum
         * @return Subscription Code
         */
        public String getSerial(String subscriber, String licenseNum)
        {
                java.util.Calendar cal = java.util.Calendar.getInstance();// 获得当前日期
                cal.add(1, 3);// +3年
                cal.add(6, -1);// 当前日-1
                java.text.NumberFormat nf = new java.text.DecimalFormat("000");
                licenseNum = nf.format(Integer.valueOf(licenseNum));// licenseNum格式化成三位数字
                String verTime = new StringBuilder("-").append(
                                new java.text.SimpleDateFormat("yyMMdd").format(cal.getTime()))
                                .append("0").toString();// 日期
                String type = "YE3MP-";
                String need = new StringBuilder(subscriber.substring(0, 1))
                                .append(type).append("300").append(licenseNum).append(verTime)
                                .toString();// 初步注册信息
                String dx = new StringBuilder(need).append(LL).append(subscriber)
                                .toString();
                int suf = this.decode(dx);// 编码初步注册信息
                String code = new StringBuilder(need).append(String.valueOf(suf))
                                .toString();
                return this.change(code);
        }
                   
        private int decode(String s)
        {
                int i;
                char[] ac;
                int j;
                int k;
                i = 0;
                ac = s.toCharArray();// 把s转化为单个字符数组
                j = 0;
                k = ac.length;
                while (j < k)
                {
                        i = (31 * i) + ac[j];
                        j++;
                }
                return Math.abs(i);
        }
                   
        private String change(String s)
        {
                byte[] abyte0;
                char[] ac = null;
                int i;
                int k;
                int j;
                abyte0 = s.getBytes();
                ac = new char[abyte0.length];
                i = 0;
                k = abyte0.length;
                while (i < k)
                {
                        j = abyte0[i];
                        if ((j >= 48) && (j <= 57))// 0-9
                        {
                                j = (((j - 48) + 5) % 10) + 48;
                        } else if ((j >= 65) && (j <= 90))// A-Z
                        {
                                j = (((j - 65) + 13) % 26) + 65;
                        } else if ((j >= 97) && (j <= 122))// a-z
                        {
                                j = (((j - 97) + 13) % 26) + 97;
                        }
                        ac[i] = (char) j;
                        i++;
                }
                return String.valueOf(ac);
        }
                   
        /**
         * 主方法,首先调用,产生注册码(Subscription Code)
         * 
         * @param args
         */
        public static void main(String[] args)
        {
                // 输入中文会出现一些中文乱码问题
                // 输入中文,一个是由于工程设置的字符集有可能会出现乱码,第二个是后面的getBytes对不同的字符会出现不同的处理形式而导致的中文乱码
                // 所以大家也就没有办法设置中文用户名了,如果有高手解决了,请通知我(QQ:506817493,E:leeshunli@qq.com),谢谢
                                   
                System.out.print("请输入注册的用户名(不支持中文):");
                Scanner scanner = new Scanner(System.in);//输入流
                String subscriber = scanner.nextLine();//读下一行字符串
                MyEclipseKeyGen myeclipseKeyGen = new MyEclipseKeyGen();//实例化
                String subscription_Code = myeclipseKeyGen.getSerial(subscriber, "1");// 后面的参数是一个数字类型的字符串,数字范围为0-999
                System.out.println("\n" + "MyEclipse注册码生成的结果如下" + "\n");
                System.out.println("Subscriber:" + subscriber);
                System.out.println("Subscription Code:" + subscription_Code);
                   
                /**
                 * 下面的是JDK1.5以前的写法,JDK1.5及以上版本的请看上面更好的写法
                 */
                   
                /*
                 * BufferedReader reader = null; try {
                 * System.out.println("请输入注册的用户名(不支持中文):"); reader = new
                 * BufferedReader(new InputStreamReader(System.in)); String subscriber =
                 * null; subscriber = reader.readLine(); System.out.println(subscriber);
                 * 
                 * MyEclipseKeyGen myeclipseKeyGen = new MyEclipseKeyGen(); String
                 * subscription_Code = myeclipseKeyGen.getSerial(subscriber, "1");//
                 * 后面的参数是一个数字类型的字符串,数字范围为0-999 // System.out.println("注册生成的结果如下");
                 * System.out.println("Subscriber:" + subscriber);
                 * System.out.println("Subscription Code:" + subscription_Code);
                 * reader.readLine();
                 * 
                 * } catch (IOException ex) { ex.printStackTrace(); } finally { if
                 * (reader != null) { try { reader.close(); } catch (IOException e) {
                 * e.printStackTrace(); } reader = null; } }
                 */
        }
}


https://code.google.com/p/newbyakwei/source/browse/trunk/cactus/src/main/java/com/dev3g/cactus/util/MyEclipseKeyGen.java?r=741

MyEclipseKeyGen.java

package com.dev3g.cactus.util;
        
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
        
public class MyEclipseKeyGen {
        
        private static final String LL = "Decompiling this copyrighted software is a violation of both your license agreement and the Digital Millenium Copyright Act of 1998 (http://www.loc.gov/copyright/legislation/dmca.pdf). 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.";
        
        public String getSerial(String userId, String type) {
                NumberFormat nf = new DecimalFormat("000");
                Calendar cal = Calendar.getInstance();
                cal.add(Calendar.YEAR, 3);
                cal.add(Calendar.DAY_OF_YEAR, -1);
                String licenseNum = nf.format((int) (Math.random() * 1000));
                String expTime = new StringBuilder("-").append(
                                new SimpleDateFormat("yyMMdd").format(cal.getTime())).append(
                                "0").toString();
                String need = new StringBuilder(userId.substring(0, 1)).append("Y")
                                .append(type).append("-100").append(licenseNum).append(expTime)
                                .toString();
                String dx = new StringBuilder(need).append(LL).append(userId)
                                .toString();
                int suf = this.decode(dx);
                String code = new StringBuilder(need).append(String.valueOf(suf))
                                .toString();
                return this.change(code);
        }
        
        private int decode(String s) {
                int i;
                char[] ac;
                int j;
                int k;
                i = 0;
                ac = s.toCharArray();
                j = 0;
                k = ac.length;
                while (j < k) {
                        i = (31 * i) + ac[j];
                        j++;
                }
                return Math.abs(i);
        }
        
        private String change(String s) {
                byte[] abyte0;
                char[] ac;
                int i;
                int k;
                int j;
                abyte0 = s.getBytes();
                ac = new char[s.length()];
                i = 0;
                k = abyte0.length;
                while (i < k) {
                        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;
                        i++;
                }
                return String.valueOf(ac);
        }
        
        public static void main(String[] args) {
                try {
                        System.out.println("please input register name:");
                        BufferedReader reader = new BufferedReader(new InputStreamReader(
                                        System.in));
                        String userId = null;
                        userId = reader.readLine();
                        if (userId == null || "".equals(userId)) {
                                System.out.println("name is null");
                                System.exit(0);
                        }
                        MyEclipseKeyGen myeclipsegen = new MyEclipseKeyGen();
                        String res = myeclipsegen.getSerial(userId, "E3MS");
                        System.out.println("Serial:" + res);
                        reader.readLine();
                }
                catch (IOException ex) {
                        ex.printStackTrace();
                }
        }
}



« 上一篇下一篇 »

评论列表:

1.tony.kent  2015-10-24 14:09:13 回复该留言
好用,多谢多谢

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。