MyEclipse註冊碼產生代碼

來源:互聯網
上載者:User

標籤:style   blog   http   java   os   strong   

(本文出處轉自http://www.blogjava.net/lishunli/archive/2010/01/07/308616.html)

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

*/

}

}

產生註冊碼測試:

請輸入註冊的使用者名稱(不支援中文):ShunLi

MyEclipse註冊碼產生的結果如下

Subscriber:ShunLi

Subscription Code:FLR8ZC-855556-67677956505812246

如何註冊?

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

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.