李順利
          隨筆-50  評(píng)論-170  文章-0  trackbacks-0

          MyEclipse注冊(cè)碼生成代碼

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

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

          代碼如下:

          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...)的注冊(cè)碼生成代碼

          *

          *

          * @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();// 初步注冊(cè)信息

          String dx = new StringBuilder(need).append(LL).append(subscriber)

          .toString();

          int suf = this.decode(dx);// 編碼初步注冊(cè)信息

          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)化為單個(gè)字符數(shù)組

          j = 0;

          k = ac.length;

          while (j < k)

          {

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

          j++;

          }

          System.out.println();

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

          }

          /**

          * 變化原則是

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

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

          * A與N,a與n對(duì)調(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)的相互對(duì)調(diào),也即0與5對(duì)調(diào),1與6對(duì)調(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)生注冊(cè)碼(Subscription Code)

          *

          * @param args

          */

          public static void main(String[] args)

          {

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

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

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

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

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

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

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

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

          System.out.println("\n" + "MyEclipse注冊(cè)碼生成的結(jié)果如下" + "\n");

          System.out.println("Subscriber:" + subscriber);

          System.out.println("Subscription Code:" + subscription_Code);

          /**

          * 下面的是JDK1.5以前的寫法,JDK1.5及以上版本的請(qǐng)看上面更好的寫法

          */

          /*

          * BufferedReader reader = null; try {

          * System.out.println("請(qǐng)輸入注冊(cè)的用戶名(不支持中文):"); 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ù)是一個(gè)數(shù)字類型的字符串,數(shù)字范圍為0-999 // System.out.println("注冊(cè)生成的結(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; } }

          */

          }

          }

          生成注冊(cè)碼測(cè)試:

          clip_image002

          請(qǐng)輸入注冊(cè)的用戶名(不支持中文):ShunLi

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

          Subscriber:ShunLi

          Subscription Code:FLR8ZC-855556-67677956505812246

          如何注冊(cè)?

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

          clip_image004

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

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

          順利寫于2009年12月25日

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

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

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

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

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

          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 樟树市| 大英县| 峡江县| 赤壁市| 义马市| 江川县| 井冈山市| 莎车县| 通山县| 修文县| 淮南市| 出国| 松滋市| 天等县| 玉林市| 乐都县| 桑日县| 梓潼县| 清远市| 梁河县| 炉霍县| 沂源县| 松溪县| 海伦市| 浦江县| 泸州市| 东光县| 鲜城| 蕉岭县| 芦溪县| 常熟市| 陕西省| 罗山县| 涿鹿县| 十堰市| 富源县| 交口县| 海丰县| 九龙县| 甘德县| 多伦县|