{"id":589,"date":"2016-06-12T17:30:28","date_gmt":"2016-06-12T09:30:28","guid":{"rendered":"http:\/\/www.xttblog.com\/?p=589"},"modified":"2016-06-12T17:30:28","modified_gmt":"2016-06-12T09:30:28","slug":"java%e7%94%9f%e6%88%90myeclipse%e6%b3%a8%e5%86%8c%e7%a0%81%e7%9a%84%e4%b8%a4%e7%a7%8d%e6%96%b9%e6%b3%95","status":"publish","type":"post","link":"https:\/\/www.xttblog.com\/?p=589","title":{"rendered":"Java\u751f\u6210MyEclipse\u6ce8\u518c\u7801\u7684\u4e24\u79cd\u65b9\u6cd5"},"content":{"rendered":"<p>\n\t<span style=\"font-size:16px\"><span style=\"font-family:comic sans ms,cursive\">\u6700\u8fd1\u5b89\u88c5\u4e86\u4e00\u4e2aMyEclipse\uff0c\u9700\u8981\u7528\u5230\u6ce8\u518c\u7801\u3002\u5c31\u5728\u7f51\u4e0a\u627e\u4e86\u4e24\u79cd\u7528java\u4ee3\u7801\u7684\u5b9e\u73b0\u65b9\u6cd5\u3002\u4e24\u79cd\u65b9\u6cd5\u4ea7\u751f\u7684\u6ce8\u518c\u7801\u4e0d\u4e00\u81f4\uff0c\u4e0d\u8fc7\u90fd\u53ef\u4ee5\u4f7f\u7528\u3002<br \/>\n\t\u65b9\u6cd5\u4e00\u7684\u4ee3\u7801\u5982\u4e0b\uff1a<\/span><\/span>\n<\/p>\n<pre class=\"brush:java;\">\r\npackage com.xttblog.util;\r\n\r\nimport java.io.BufferedReader;\r\nimport java.io.IOException;\r\nimport java.io.InputStreamReader;\r\nimport java.text.DecimalFormat;\r\nimport java.text.NumberFormat;\r\nimport java.text.SimpleDateFormat;\r\nimport java.util.Calendar;\r\n\r\n\/**\r\n * java\u751f\u6210MyEclipse\u6ce8\u518c\u7801\r\n * @author \u4e1a\u4f59\u8349 www.xttblog.com\r\n * @date 2016\u5e746\u670812\u65e516:09:20\r\n *\/\r\npublic class GenKeyUtil {\r\n\tprivate static final String LL = &quot;\u4e1a\u4f59\u8349:www.xttblog.com&quot;;  \r\n    public String getSerial(String userId, String type) {  \r\n        NumberFormat nf = new DecimalFormat(&quot;000&quot;);  \r\n        Calendar cal = Calendar.getInstance();  \r\n        cal.add(Calendar.YEAR, 3);  \r\n        cal.add(Calendar.DAY_OF_YEAR, -1);  \r\n        String licenseNum = nf.format((int) (Math.random() * 1000));  \r\n        String expTime = new StringBuilder(&quot;-&quot;).append(  \r\n                new SimpleDateFormat(&quot;yyMMdd&quot;).format(cal.getTime())).append(  \r\n                &quot;0&quot;).toString();  \r\n        String need = new StringBuilder(userId.substring(0, 1)).append(&quot;Y&quot;)  \r\n                .append(type).append(&quot;-100&quot;).append(licenseNum).append(expTime)  \r\n                .toString();  \r\n        String dx = new StringBuilder(need).append(LL).append(userId)  \r\n                .toString();  \r\n        int suf = this.decode(dx);  \r\n        String code = new StringBuilder(need).append(String.valueOf(suf))  \r\n                .toString();  \r\n        return this.change(code);  \r\n    }  \r\n  \r\n    private int decode(String s) {  \r\n        int i;  \r\n        char[] ac;  \r\n        int j;  \r\n        int k;  \r\n        i = 0;  \r\n        ac = s.toCharArray();  \r\n        j = 0;  \r\n        k = ac.length;  \r\n        while (j &lt; k) {  \r\n            i = (31 * i) + ac[j];  \r\n            j++;  \r\n        }  \r\n        return Math.abs(i);  \r\n    }  \r\n  \r\n    private String change(String s) {  \r\n        byte[] abyte0;  \r\n        char[] ac;  \r\n        int i;  \r\n        int k;  \r\n        int j;  \r\n        abyte0 = s.getBytes();  \r\n        ac = new char[s.length()];  \r\n        i = 0;  \r\n        k = abyte0.length;  \r\n        while (i &lt; k) {  \r\n            j = abyte0[i];  \r\n            if ((j &gt;= 48) &amp;&amp; (j &lt;= 57)) {  \r\n                j = (((j - 48) + 5) % 10) + 48;  \r\n            } else if ((j &gt;= 65) &amp;&amp; (j &lt;= 90)) {  \r\n                j = (((j - 65) + 13) % 26) + 65;  \r\n            } else if ((j &gt;= 97) &amp;&amp; (j &lt;= 122)) {  \r\n                j = (((j - 97) + 13) % 26) + 97;  \r\n            }  \r\n            ac[i] = (char) j;  \r\n            i++;  \r\n        }  \r\n        return String.valueOf(ac);  \r\n    }  \r\n  \r\n    public static void main(String[] args) {  \r\n        try {  \r\n            System.out.println(&quot;please input register name:&quot;);  \r\n            BufferedReader reader = new BufferedReader(new InputStreamReader(  \r\n                    System.in));  \r\n            String userId = null;  \r\n            userId = reader.readLine();  \r\n            if (userId == null || &quot;&quot;.equals(userId)) {  \r\n                System.out.println(&quot;name is null&quot;);  \r\n                System.exit(0);  \r\n            }  \r\n            GenKeyUtil myeclipsegen = new GenKeyUtil();  \r\n            String res = myeclipsegen.getSerial(userId, &quot;E3MS&quot;);  \r\n            System.out.println(&quot;Serial:&quot; + res);  \r\n            reader.readLine();  \r\n        } catch (IOException ex) {  \r\n            ex.printStackTrace();  \r\n        }  \r\n    }  \r\n}<\/pre>\n<p>\n\t<span style=\"font-size:16px\"><span style=\"font-family:comic sans ms,cursive\">\u65b9\u6cd5\u4e8c\u7684\u4ee3\u7801\u5982\u4e0b\uff1a<\/span><\/span>\n<\/p>\n<pre class=\"brush:java;\">\r\npackage com.xttblog.util;\r\n\r\nimport java.math.BigInteger;\r\nimport java.util.Date;\r\nimport java.util.Random;\r\nimport java.util.zip.CRC32;\r\n\r\n\/**\r\n * java\u751f\u6210MyEclipse\u6ce8\u518c\u7801\r\n * @author \u4e1a\u4f59\u8349 www.xttblog.com\r\n * @date 2016\u5e746\u670812\u65e516:09:20\r\n *\/\r\npublic class KeyGenUtil {\r\n\t\r\n\t\/**\r\n\t * \u83b7\u53d6\u5faa\u73af\u5197\u4f59\u7801\r\n\t * @author \u4e1a\u4f59\u8349 www.xttblog.com\r\n\t *\/\r\n    private static short getCRC(String str, int i, byte bytes[])  {  \r\n        CRC32 crc32 = new CRC32();  \r\n        if (str != null){  \r\n            for (int j = 0; j &lt; str.length(); j++){  \r\n                crc32.update(str.charAt(j));  \r\n            }  \r\n        }  \r\n        crc32.update(i);  \r\n        crc32.update(i &gt;&gt; 8);  \r\n        crc32.update(i &gt;&gt; 16);  \r\n        crc32.update(i &gt;&gt; 24);  \r\n        for (int k = 0; k &lt; bytes.length - 2; k++) {  \r\n            crc32.update(bytes[k]);  \r\n        }  \r\n        return (short) (int) crc32.getValue();  \r\n    }  \r\n    \r\n    \/**\r\n\t * @author \u4e1a\u4f59\u8349 www.xttblog.com\r\n\t *\/  \r\n    private static String encodeGroups(BigInteger biginteger) {  \r\n        BigInteger beginner1 = BigInteger.valueOf(0x39aa400L);  \r\n        StringBuilder sb = new StringBuilder();  \r\n        for (int i = 0; biginteger.compareTo(BigInteger.ZERO) != 0; i++){  \r\n            int j = biginteger.mod(beginner1).intValue();  \r\n            if (i &gt; 0){  \r\n                sb.append(&quot;-&quot;);  \r\n            }  \r\n            sb.append(encodeGroup(j));  \r\n            biginteger = biginteger.divide(beginner1);  \r\n        }  \r\n        return sb.toString();  \r\n    }\r\n    \r\n    \/**\r\n\t * @author \u4e1a\u4f59\u8349 www.xttblog.com\r\n\t *\/    \r\n    public static String encodeGroup(int i){  \r\n        StringBuilder sb = new StringBuilder();  \r\n        for (int j = 0; j &lt; 5; j++){  \r\n            int k = i % 36;  \r\n            char c;  \r\n            if (k &lt; 10){  \r\n                c = (char) (48 + k);  \r\n            } else {  \r\n                c = (char) ((65 + k) - 10);  \r\n            }  \r\n            sb.append(c);  \r\n            i \/= 36;  \r\n        }  \r\n        return sb.toString();  \r\n    }  \r\n    \r\n    \/**\r\n\t * @author \u4e1a\u4f59\u8349 www.xttblog.com\r\n\t *\/  \r\n    public static String MakeKey(String name, int days, int id){  \r\n        id %= 100000;  \r\n        byte bkey[] = new byte[12];  \r\n        bkey[0] = (byte) 1; \r\n        bkey[1] = 13; \r\n        Date d = new Date();  \r\n        long ld = (d.getTime() &gt;&gt; 16);  \r\n        bkey[2] = (byte) (ld &amp; 255);  \r\n        bkey[3] = (byte) ((ld &gt;&gt; 8) &amp; 255);  \r\n        bkey[4] = (byte) ((ld &gt;&gt; 16) &amp; 255);  \r\n        bkey[5] = (byte) ((ld &gt;&gt; 24) &amp; 255);  \r\n        days &amp;= 0xffff;  \r\n        bkey[6] = (byte) (days &amp; 255);  \r\n        bkey[7] = (byte) ((days &gt;&gt; 8) &amp; 255);  \r\n        bkey[8] = 105;  \r\n        bkey[9] = -59;  \r\n        bkey[10] = 0;  \r\n        bkey[11] = 0;  \r\n        int w = getCRC(name, id % 100000, bkey);  \r\n        bkey[10] = (byte) (w &amp; 255);  \r\n        bkey[11] = (byte) ((w &gt;&gt; 8) &amp; 255);  \r\n        BigInteger pow = new BigInteger(&quot;89126272330128007543578052027888001981&quot;, 10),\r\n        mod = new BigInteger(&quot;86f71688cdd2612ca117d1f54bdae029&quot;, 16);  \r\n        BigInteger k0 = new BigInteger(bkey),k1 = k0.modPow(pow, mod);  \r\n        String s0 = Integer.toString(id),sz = &quot;0&quot;;  \r\n        while (s0.length() != 5){  \r\n            s0 = sz.concat(s0);  \r\n        }  \r\n        s0 = s0.concat(&quot;-&quot;);  \r\n        s0 = s0.concat(encodeGroups(k1));  \r\n        return s0;  \r\n    }  \r\n  \r\n    public static void main(String[] args){  \r\n        String name = &quot;xttblog.com&quot;;  \r\n        Random r = new Random();  \r\n        System.out.println(&quot;regName:&quot;+name);  \r\n        System.out.println(&quot;regCode:&quot;+MakeKey(name, 0, r.nextInt(100000)));  \r\n    }  \r\n}<\/pre>\n<p>\n\t<span style=\"font-size:16px\"><span style=\"font-family:comic sans ms,cursive\">\u7248\u6743\u58f0\u660e\uff1a\u672c\u6587\u4e3a\u535a\u4e3b\u539f\u521b\u6587\u7ae0\uff0c\u672a\u7ecf\u535a\u4e3b\u5141\u8bb8\u4e0d\u5f97\u8f6c\u8f7d\u3002<\/span><\/span><\/p>\n<!-- <audio autoplay=\"autoplay\" height=\"100\" width=\"100\" hidden=\"true\"><source src=\"https:\/\/c.coka.la\/orAvPR.mp3\" type=\"audio\/mp3\"\/><\/audio><img decoding=\"async\" src=\"https:\/\/images.weserv.nl\/?url=https:\/\/ws3.sinaimg.cn\/large\/8fa5dcfcgy1g4em3rzar5j20ib089ae0.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/> --><p><!-- <img decoding=\"async\" src=\"https:\/\/raw.githubusercontent.com\/xmt1139057136\/xttblog\/master\/8fa5dcfcgy1g4em3rzar5j20ib089ae0.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/>--><img decoding=\"async\" src=\"https:\/\/saas.51autoparts.cn\/api\/admin\/sys-file\/oss\/file?fileName=84db51f8561e448f9a4fda2eff0811f9.jpg\" alt=\"\u4e1a\u4f59\u8349\u516c\u4f17\u53f7\"\/><\/p><p>\u6700\u540e\uff0c\u6b22\u8fce\u5173\u6ce8\u6211\u7684\u4e2a\u4eba\u5fae\u4fe1\u516c\u4f17\u53f7\uff1a\u4e1a\u4f59\u8349\uff08yyucao\uff09\uff01<b>\u53ef\u52a0\u4f5c\u8005\u5fae\u4fe1\u53f7\uff1a<font color=\"red\">xttblog2<\/font>\u3002\u5907\u6ce8\uff1a\u201c1\u201d\uff0c\u6dfb\u52a0\u535a\u4e3b\u5fae\u4fe1\u62c9\u4f60\u8fdb\u5fae\u4fe1\u7fa4\u3002\u5907\u6ce8\u9519\u8bef\u4e0d\u4f1a\u540c\u610f\u597d\u53cb\u7533\u8bf7\u3002<\/b>\u518d\u6b21\u611f\u8c22\u60a8\u7684\u5173\u6ce8\uff01\u540e\u7eed\u6709\u7cbe\u5f69\u5185\u5bb9\u4f1a\u7b2c\u4e00\u65f6\u95f4\u53d1\u7ed9\u60a8\uff01\u539f\u521b\u6587\u7ae0\u6295\u7a3f\u8bf7\u53d1\u9001\u81f3532009913@qq.com\u90ae\u7bb1\u3002\u5546\u52a1\u5408\u4f5c\u4e5f\u53ef\u6dfb\u52a0\u4f5c\u8005\u5fae\u4fe1\u8fdb\u884c\u8054\u7cfb\uff01<\/p><p>\u672c\u6587\u539f\u6587\u51fa\u5904\uff1a<a href=\"https:\/\/www.xttblog.com\">\u4e1a\u4f59\u8349<\/a>\uff1a &raquo; <a href=\"https:\/\/www.xttblog.com\/?p=589\">Java\u751f\u6210MyEclipse\u6ce8\u518c\u7801\u7684\u4e24\u79cd\u65b9\u6cd5<\/a><\/p><!-- <div class=\"bd-reward-stl\"><button id=\"bdRewardBtn\"><span><\/span><\/button><\/div> -->","protected":false},"excerpt":{"rendered":"<p>\u6700\u8fd1\u5b89\u88c5\u4e86\u4e00\u4e2aMyEclipse\uff0c\u9700\u8981\u7528\u5230\u6ce8\u518c\u7801\u3002\u5c31\u5728\u7f51\u4e0a\u627e\u4e86\u4e24\u79cd\u7528java\u4ee3\u7801\u7684\u5b9e\u73b0\u65b9\u6cd5\u3002\u4e24\u79cd\u65b9\u6cd5\u4ea7\u751f\u7684\u6ce8\u518c [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[69,343,345,342,344],"class_list":["post-589","post","type-post","status-publish","format-standard","hentry","category-java","tag-java","tag-myeclipse"],"_links":{"self":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/589","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=589"}],"version-history":[{"count":1,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/589\/revisions"}],"predecessor-version":[{"id":590,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=\/wp\/v2\/posts\/589\/revisions\/590"}],"wp:attachment":[{"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=589"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=589"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.xttblog.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=589"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}