? alloy的許可證分成四個(gè)部分,每個(gè)部分之間用#號(hào)分隔,第一部分是許可證過(guò)期時(shí)間,第二部分是用戶名,第三和第四部分是兩個(gè)36進(jìn)制的整數(shù),其中第三部分是校驗(yàn)碼,第四部分是一個(gè)隨機(jī)數(shù)(我是這么認(rèn)為的,第四部分寫死成一個(gè)常量也沒有什么關(guān)系)。 ?
? ? ? 好了,了解了許可證的構(gòu)造之后,我們來(lái)了解一下alloy檢驗(yàn)許可證是否合法和過(guò)期的過(guò)程。 ?
? ? ? 一:分離許可證的各個(gè)部分。 ?
? ? ? 二:判斷日期部分的長(zhǎng)度,如果長(zhǎng)度大于1,就構(gòu)造一個(gè)過(guò)期時(shí)間,否則過(guò)期時(shí)間為null。(這下子我們就可以通過(guò)使日期部分的長(zhǎng)度不超過(guò)1來(lái)讓alloy永不過(guò)期了^-^)。 ?
? ? ? 三:調(diào)用Long.parseLong(String, ? int)方法解析出第三和第四部分兩個(gè)36進(jìn)制整數(shù)的10進(jìn)制的值。 ?
? ? ? 四:使用java.util.zip.CRC32來(lái)計(jì)算校驗(yàn)值,計(jì)算的過(guò)程是把從第四部分得到的10進(jìn)值整數(shù)對(duì)127取模,然后加上第一、二兩個(gè)部分(包括中間的#號(hào)),這樣就構(gòu)造出一個(gè)字符串,然后調(diào)用CRC32.update()方法計(jì)算這個(gè)字符串的校驗(yàn)值。 ?
? ? ? 五:使用getValue()方法從CRC32中取得校驗(yàn)值,然后將這個(gè)校驗(yàn)值與從第三部分獲得的10進(jìn)制數(shù)值比較,如果相等,則校驗(yàn)成功。隨后就是判斷當(dāng)前日期是否過(guò)期的操作了。 ?
? ? ? 這大致就是alloy驗(yàn)證許可證的過(guò)程,我們反過(guò)來(lái)做一遍,就可以得到我們自己的許可證了。下面就是我寫的構(gòu)造許可證的方法,供大家參考。 ?
? ?
? public ? String ? generate(String ? user) ?
? { ?
? ? ? ? ? String ? exp ? = ? "x"; ?
? ? ? ? ? String ? rand ? = ? "torresg"; ?
? ? ? ? ? long ? l ? = ? Long.parseLong(rand, ? 36); ?
? ? ? ? ? CRC32 ? crc32 ? = ? new ? CRC32(); ?
? ? ? ? ? crc32.update((l ? % ? 127L ? + ? exp ? + ? "#" ? + ? user).getBytes()); ?
? ? ? ? ? String ? checksum ? = ? Long.toString(crc32.getValue(), ? 36); ?
? ? ? ? ? return ? exp ? + ? "#" ? + ? user ? + ? "#" ? + ? checksum ? + ? "#" ? + ? rand; ?
? } ?
? ?
? 另外就是過(guò)期時(shí)間不能為空,因?yàn)閍lloy中另外某個(gè)地方要對(duì)這個(gè)時(shí)間進(jìn)行處理。為空的話也會(huì)驗(yàn)證失敗。所以過(guò)期時(shí)間要使用一個(gè)長(zhǎng)度為1的字符串。
com.incors.plaf.alloy.AlloyLookAndFeel.setProperty("alloy.licenseCode",
????"v#ej_technologies#uwbjzx#e6pck8");
??try {
???javax.swing.LookAndFeel alloyLnF = new com.incors.plaf.alloy.AlloyLookAndFeel();
???javax.swing.UIManager.setLookAndFeel(alloyLnF);
??} catch (javax.swing.UnsupportedLookAndFeelException ex) {
???// You may handle the exception here
???ex.printStackTrace();
??}
posted on 2007-01-11 11:00
aaabbb 閱讀(328)
評(píng)論(0) 編輯 收藏 所屬分類:
Swing