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

          MyEclipse注冊碼生成代碼

          關鍵字:MyEclipse 注冊碼 代碼 Java 生成 Key Subscription李順利

          MyEclipse注冊碼網上到處都是,但是你想不想用你的名字來進行注冊,而且想不想知道MyEclipse注冊碼到底是如何生成的?現在就讓我來帶你看看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();// 獲得當前日期

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

          }

          System.out.println();

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

          }

          /**

          * 變化原則是

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

          * 0與5對調(0變5,5變0)

          * A與N,a與n對調

          * @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,實現01234和56789相應的相互對調,也即0與5對調,1與6對調

          {

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

          */

          }

          }

          生成注冊碼測試:

          clip_image002

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

          MyEclipse注冊碼生成的結果如下

          Subscriber:ShunLi

          Subscription Code:FLR8ZC-855556-67677956505812246

          如何注冊?

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

          clip_image004

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

          注:本程序借鑒網上,自己加了些自己的想法和注釋,并做了一些改進,本人QQ:506817493,歡迎大家一起交流學習。

          順利寫于2009年12月25日

          博客中的一些下載已經放到了百度云了,請根據需要下載。【點我去百度云下載】

          最后弱弱地說一下,如果可以的話,轉載請提供出處( ),謝謝。

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

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

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

          網站導航:
           
          主站蜘蛛池模板: 铜梁县| 新化县| 洱源县| 兴隆县| 确山县| 桦甸市| 正安县| 鞍山市| 电白县| 奇台县| 泽州县| 余干县| 宁明县| 威远县| 石泉县| 镇坪县| 酒泉市| 元阳县| 竹山县| 信阳市| 清流县| 高碑店市| 和平区| 岐山县| 广州市| 池州市| 乐安县| 建湖县| 青神县| 五大连池市| 永安市| 米脂县| 鞍山市| 小金县| 大丰市| 青田县| 荆门市| 青河县| 德惠市| 玉环县| 祁阳县|