有效期至209912310
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main{
private static final String L = "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 static void main(String[] args) {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String userId="",version="",need="";
System.out.print("please input the username:");
try{
userId=br.readLine();
System.out.println();
}catch(Exception e){
}
System.out.println("1 - MyEclipse4.0.0 GA");
System.out.println("2 - MyEclipse4.1 GA");
System.out.println("3 - MyEclipse4.9.1");
System.out.println("4 - MyEclipse5.1.0 GA");
System.out.println();
System.out.print("please choose the version of MyEclipse:");
try{
version=br.readLine();
int v = Integer.parseInt(version);
switch(v){
case 1:need = userId.substring(0,1) + "YE3MP-400-01-9912310";break;
case 2:need = userId.substring(0,1) + "YE3MP-401-00-9912310";break;
case 3:need = userId.substring(0,1) + "YE3MP-491-01-9912310";break;
case 4:need = userId.substring(0,1) + "YE3MP-501-00-9912310";break;
}
}catch(Exception e){
}
// 其中491(4.9.1)/400(4.0)/401(4.1)/501(5.1.0),()内为版本号,9912310代表注册码过期时间2099/12/31
// MyEclipse4.0.0 GA
// String need = userId.substring(0,1) + "YE3MP-400-01-9912310";
// MyEclipse4.1 GA
// String need = userId.substring(0,1) + "YE3MP-401-00-9912310";
// MyEclipse4.9.1
// String need = userId.substring(0,1) + "YE3MP-491-01-9912310";
// MyEclipse5.1.0 GA
// String need = userId.substring(0,1) + "YE3MP-501-00-9912310";
String dx = need + L + userId;
int suf = decode(dx);
// System.out.println("SUF:"+suf);
String code = need + suf;
System.out.println(" The result is:");
System.out.println(change(code));
System.out.println(" The time up to 2099/12/31");
}
static int decode(String s){
int i = 0;
char ac[] = s.toCharArray();
int j = 0;
for (int k = ac.length; j < k; j++){
i = 31 * i + ac[j];
}
return Math.abs(i);
}
static String change(String s){
byte abyte0[] = s.getBytes();
char ac[] = new char[s.length()];
int i = 0;
for (int k = abyte0.length; i < k; i++){
int 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;
}
return String.valueOf(ac);
}
}