李順利
          隨筆-50  評論-170  文章-0  trackbacks-0

          MyEclipse注冊碼生成代碼

          關(guān)鍵字:MyEclipse 注冊碼 代碼 Java 生成 Key Subscription李順利

          MyEclipse注冊碼網(wǎng)上到處都是,但是你想不想用你的名字來進(jìn)行注冊,而且想不想知道MyEclipse注冊碼到底是如何生成的?現(xiàn)在就讓我來帶你看看MyEclipse注冊碼是如何人性化的生成的。

          代碼如下:

          package org.usc.key.gen;

          import java.io.BufferedReader;

          import java.io.IOException;

          import java.io.InputStreamReader;

          import java.util.Scanner;

          /**

          * MyEclipse(8.0,7.5,7.0,6.5,6.0...)的注冊碼生成代碼

          *

          *

          * @author ShunLi

          * @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();// 獲得當(dāng)前日期

          cal.add(1, 3);// +3年

          cal.add(6, -1);// 當(dāng)前日-1

          java.text.NumberFormat nf = new java.text.DecimalFormat("000");

          licenseNum = nf.format(Integer.valueOf(licenseNum));// licenseNum格式化成三位數(shù)字

          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轉(zhuǎn)化為單個字符數(shù)組

          j = 0;

          k = ac.length;

          while (j < k)

          {

          i = (31 * i) + ac[j];//加密算法,不理解為什么這樣子?有可能就是這樣子定義的

          j++;

          }

          System.out.println();

          return Math.abs(i);//取絕對值

          }

          /**

          * 變化原則是

          * 把數(shù)字(10個)或者字母表(大小寫個26個)折半對調(diào)(兩個相互改變),也即

          * 0與5對調(diào)(0變5,5變0)

          * A與N,a與n對調(diào)

          * @param 原字符串

          * @return 變化后的字符串

          */

          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,實(shí)現(xiàn)01234和56789相應(yīng)的相互對調(diào),也即0與5對調(diào),1與6對調(diào)

          {

          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);

          }

          /**

          * 主方法,首先調(diào)用,產(chǎn)生注冊碼(Subscription Code)

          *

          * @param args

          */

          public static void main(String[] args)

          {

          // 輸入中文會出現(xiàn)一些中文亂碼問題

          // 輸入中文,一個是由于工程設(shè)置的字符集有可能會出現(xiàn)亂碼,第二個是后面的getBytes對不同的字符會出現(xiàn)不同的處理形式而導(dǎo)致的中文亂碼

          // 所以大家也就沒有辦法設(shè)置中文用戶名了,如果有高手解決了,請通知我(QQ:506817493,E:leeshunli@qq.com),謝謝

          System.out.print("請輸入注冊的用戶名(不支持中文):");

          Scanner scanner = new Scanner(System.in);//輸入流

          String subscriber = scanner.nextLine();//讀下一行字符串

          MyEclipseKeyGen myeclipseKeyGen = new MyEclipseKeyGen();//實(shí)例化

          String subscription_Code = myeclipseKeyGen.getSerial(subscriber, "1");// 后面的參數(shù)是一個數(shù)字類型的字符串,數(shù)字范圍為0-999

          System.out.println("\n" + "MyEclipse注冊碼生成的結(jié)果如下" + "\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");//

          * 后面的參數(shù)是一個數(shù)字類型的字符串,數(shù)字范圍為0-999 // System.out.println("注冊生成的結(jié)果如下");

          * 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; } }

          */

          }

          }

          生成注冊碼測試:

          clip_image002

          請輸入注冊的用戶名(不支持中文):ShunLi

          MyEclipse注冊碼生成的結(jié)果如下

          Subscriber:ShunLi

          Subscription Code:FLR8ZC-855556-67677956505812246

          如何注冊?

          選擇:MyEclipse->Subscription Information...,在把剛生成的注冊碼對應(yīng)填入

          clip_image004

          (由于我已經(jīng)注冊調(diào)試成功,可能截圖有點(diǎn)不一樣,請諒解),注冊三年(你三年不重裝電腦或其他情況真的很少了)。

          注:本程序借鑒網(wǎng)上,自己加了些自己的想法和注釋,并做了一些改進(jìn),本人QQ:506817493,歡迎大家一起交流學(xué)習(xí)。

          順利寫于2009年12月25日

          博客中的一些下載已經(jīng)放到了百度云了,請根據(jù)需要下載。【點(diǎn)我去百度云下載】

          最后弱弱地說一下,如果可以的話,轉(zhuǎn)載請?zhí)峁┏鎏? ),謝謝。

          posted on 2010-01-07 21:24 李順利 閱讀(18960) 評論(5)  編輯  收藏

          評論:
          # re: MyEclipse注冊碼生成代碼 2012-06-16 10:25 | TT
          HAO   回復(fù)  更多評論
            
          # re: MyEclipse注冊碼生成代碼 2013-03-08 16:29 | 啊啊啊
          編譯好后把代碼沾上去發(fā)現(xiàn)他還呀active
            回復(fù)  更多評論
            
          # re: MyEclipse注冊碼生成代碼 2013-08-24 10:12 | 高根
          安師大的  回復(fù)  更多評論
            
          # re: MyEclipse注冊碼生成代碼 2013-10-26 19:14 | mr
          好厲害  回復(fù)  更多評論
            
          # re: MyEclipse注冊碼生成代碼[未登錄] 2014-05-22 16:14 | x
          cgvnmv bnnv  回復(fù)  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。

          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 襄汾县| 江北区| 金平| 无棣县| 监利县| 新河县| 西盟| 二连浩特市| 高唐县| 高雄市| 建瓯市| 武鸣县| 阿拉尔市| 江都市| 无为县| 杭锦后旗| 凌海市| 同江市| 麻阳| 吉木萨尔县| 宾川县| 周至县| 巩义市| 栾城县| 景洪市| 盱眙县| 西乡县| 孟津县| 清河县| 定日县| 宣恩县| 马边| 界首市| 巫溪县| 沿河| 锦州市| 松江区| 东山县| 泰安市| 乐陵市| 台前县|