只給編譯后的.jar文件,不給.java文件
創(chuàng)新互聯(lián)建站一直秉承“誠信做人,踏實(shí)做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個(gè)客戶多一個(gè)朋友!為您提供網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、成都網(wǎng)頁設(shè)計(jì)、重慶小程序開發(fā)公司、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、app開發(fā)定制是成都本地專業(yè)的網(wǎng)站建設(shè)和網(wǎng)站設(shè)計(jì)公司,等你一起來見證!
不過要說明的是,java因?yàn)槭亲止?jié)碼,所以沒有辦法防止被反編譯。
最多也就是做一下代碼混淆,比如把方法或變量名改成無意義的名稱,或者加一些完全無用的代碼進(jìn)去,讓惡意攻擊的人難以看懂
可以的,但是對(duì)jar包直接加密,目前只支持J2SE,還不支持J2EE。更多的還是用混編器(java obfuscator)。下面是關(guān)于HASP的介紹。
-----------------------------------------------------
針對(duì)java加密防止反編譯的解決方案
眾所周知,java開發(fā)語言提供了很方便的開發(fā)平臺(tái),開發(fā)出來的程序很容易在不同的平臺(tái)上被移植,現(xiàn)在越來越多的人使用它來開發(fā)軟件,與.net語言并駕齊驅(qū)。
Java有它方便的一面,同時(shí)也給開發(fā)者帶來了一個(gè)不小的煩惱,就是保護(hù)程序代碼變得困難,因?yàn)閖ava語言編譯和代碼執(zhí)行的特殊性,目前,除了HASP外,還沒有一個(gè)更好的解決辦法或保護(hù)方案,但如果不采取有力的措施,則自己辛辛苦苦開發(fā)出來的程序很容易被人復(fù)制而據(jù)為己有,一般情況下,大多數(shù)的人都是用混編器(java obfuscator)來把開發(fā)出來的程序進(jìn)行打亂,以想達(dá)到防止反編譯的目的,但是,這種方法在網(wǎng)上很容易找到相關(guān)的軟件來重新整理,那么這個(gè)混編器工具也只能控制一些本來就沒有辦法的人,而對(duì)于稍懂工具的人幾乎是透明的,沒有任何意義。再說硬件加密鎖,大多數(shù)廠商提供的加密鎖只能進(jìn)行dll的連接或簡(jiǎn)單的api調(diào)用,只要簡(jiǎn)單地反編譯,就很容易把a(bǔ)pi去掉,這樣加密鎖根本起不了作用,那到底是否還有更好的解決辦法呢?
現(xiàn)提供2種解決辦法:
1、以色列阿拉丁公司的HASP HL加密鎖提供的外殼加密工具中,有一個(gè)叫做數(shù)據(jù)加密的功能,這個(gè)功能可以很好的防止反編譯而去掉api的調(diào)用,大家知道:硬件加密鎖的保護(hù)原理就是讓加密過的軟件和硬件緊密地連接在一起,調(diào)用不會(huì)輕易地被剔除,這樣才能持久地保護(hù)您的軟件不被盜版,同時(shí),這種方式使用起來非常簡(jiǎn)單,很容易被程序員掌握,要對(duì)一個(gè)軟件實(shí)現(xiàn)保護(hù),大約只需幾分鐘的時(shí)間就可以了,下面簡(jiǎn)單介紹一下它的原理:
運(yùn)用HASP HL的外殼工具先把java解釋器進(jìn)行加密,那么,如果要啟動(dòng)這個(gè)解釋器就需要有特定的加密鎖存在,然后,再運(yùn)用外殼工具中的數(shù)據(jù)加密功能把java程序(CLASS或JAR包)當(dāng)作一個(gè)數(shù)據(jù)文件來進(jìn)行加密處理,生成新的java程序(CLASS或JAR包),因?yàn)檫@個(gè)加密過程是在鎖內(nèi)完成的,并采用了128位的AES算法,這樣,加密后的java程序,無論你采用什么樣的反編譯工具,都是無法反編譯出來的。您的軟件也只有被加密過的java解釋器并有加密鎖的情況下才能正常運(yùn)行,如果沒有加密鎖,程序不能運(yùn)行,從而達(dá)到真正保護(hù)您的軟件的目的。
2、HASP HL提供專門針對(duì)java外殼加密工具,直接加密jar包,防止外編譯,目前只支持J2SE,將來會(huì)進(jìn)一步支持J2EE,如果情況適合則是最簡(jiǎn)單的方法。
基本的單向加密算法:
BASE64 嚴(yán)格地說,屬于編碼格式,而非加密算法
MD5(Message Digest algorithm 5,信息摘要算法)
SHA(Secure Hash Algorithm,安全散列算法)
HMAC(Hash Message Authentication Code,散列消息鑒別碼)
復(fù)雜的對(duì)稱加密(DES、PBE)、非對(duì)稱加密算法:
DES(Data Encryption Standard,數(shù)據(jù)加密算法)
PBE(Password-based encryption,基于密碼驗(yàn)證)
RSA(算法的名字以發(fā)明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)
DH(Diffie-Hellman算法,密鑰一致協(xié)議)
DSA(Digital Signature Algorithm,數(shù)字簽名)
ECC(Elliptic Curves Cryptography,橢圓曲線密碼編碼學(xué))
代碼參考:
/**
*?BASE64加密
*
*?@param?key
*?@return
*?@throws?Exception
*/
public?static?String?encryptBASE64(byte[]?key)?throws?Exception?{
return?(new?BASE64Encoder()).encodeBuffer(key);
}
/**
*?MD5加密
*
*?@param?data
*?@return
*?@throws?Exception
*/
public?static?byte[]?encryptMD5(byte[]?data)?throws?Exception?{
MessageDigest?md5?=?MessageDigest.getInstance(KEY_MD5);
md5.update(data);
return?md5.digest();
}
/**
*?SHA加密
*
*?@param?data
*?@return
*?@throws?Exception
*/
public?static?byte[]?encryptSHA(byte[]?data)?throws?Exception?{
MessageDigest?sha?=?MessageDigest.getInstance(KEY_SHA);
sha.update(data);
return?sha.digest();
}
}
/**
*?初始化HMAC密鑰
*
*?@return
*?@throws?Exception
*/
public?static?String?initMacKey()?throws?Exception?{
KeyGenerator?keyGenerator?=?KeyGenerator.getInstance(KEY_MAC);
SecretKey?secretKey?=?keyGenerator.generateKey();
return?encryptBASE64(secretKey.getEncoded());
}
/**
*?HMAC加密
*
*?@param?data
*?@param?key
*?@return
*?@throws?Exception
*/
public?static?byte[]?encryptHMAC(byte[]?data,?String?key)?throws?Exception?{
SecretKey?secretKey?=?new?SecretKeySpec(decryptBASE64(key),?KEY_MAC);
Mac?mac?=?Mac.getInstance(secretKey.getAlgorithm());
mac.init(secretKey);
return?mac.doFinal(data);
}
當(dāng)前名稱:java代碼加密編譯,java代碼加密運(yùn)行
網(wǎng)站路徑:http://www.rwnh.cn/article32/dssdppc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、手機(jī)網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站改版、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)