① 為了保證軟體的安全性,java採用了那些措施
Java的安全性主要體現在以下幾個方面:
使用引用取代了指針,指針的功能強大,但是也容易造成錯誤,如數組越界問題。
擁有一套異常處理機制,使用關鍵字throw、throws、try、catch、finally
強制類型轉換需要符合一定規則
位元組碼傳輸使用了加密機制
運行環境提供保障機制:位元組碼校驗器->類載入器->運行時內存布局->文件訪問限制
不用程序員顯示控制內存釋放,JVM 有垃圾回收機制
② 分享Java常用幾種加密演算法
簡單的Java加密演算法有:
第一種. BASE
Base是網路上最常見的用於傳輸Bit位元組代碼的編碼方式之一,大家可以查看RFC~RFC,上面有MIME的詳細規范。Base編碼可用於在HTTP環境下傳遞較長的標識信息。例如,在Java Persistence系統Hibernate中,就採用了Base來將一個較長的唯一標識符(一般為-bit的UUID)編碼為一個字元串,用作HTTP表單和HTTP GET URL中的參數。在其他應用程序中,也常常需要把二進制數據編碼為適合放在URL(包括隱藏表單域)中的形式。此時,採用Base編碼具有不可讀性,即所編碼的數據不會被人用肉眼所直接看到。
第二種. MD
MD即Message-Digest Algorithm (信息-摘要演算法),用於確保信息傳輸完整一致。是計算機廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD的前身有MD、MD和MD。廣泛用於加密和解密技術,常用於文件校驗。校驗?不管文件多大,經過MD後都能生成唯一的MD值。好比現在的ISO校驗,都是MD校驗。怎麼用?當然是把ISO經過MD後產生MD的值。一般下載linux-ISO的朋友都見過下載鏈接旁邊放著MD的串。就是用來驗證文件是否一致的。
MD演算法具有以下特點:
壓縮性:任意長度的數據,算出的MD值長度都是固定的。
容易計算:從原數據計算出MD值很容易。
抗修改性:對原數據進行任何改動,哪怕只修改個位元組,所得到的MD值都有很大區別。
弱抗碰撞:已知原數據和其MD值,想找到一個具有相同MD值的數據(即偽造數據)是非常困難的。
強抗碰撞:想找到兩個不同的數據,使它們具有相同的MD值,是非常困難的。
MD的作用是讓大容量信息在用數字簽名軟體簽署私人密鑰前被」壓縮」成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的十六進制數字串)。除了MD以外,其中比較有名的還有sha-、RIPEMD以及Haval等。
第三種.SHA
安全哈希演算法(Secure Hash Algorithm)主要適用於數字簽名標准(Digital Signature Standard DSS)裡面定義的數字簽名演算法(Digital Signature Algorithm DSA)。對於長度小於^位的消息,SHA會產生一個位的消息摘要。該演算法經過加密專家多年來的發展和改進已日益完善,並被廣泛使用。該演算法的思想是接收一段明文,然後以一種不可逆的方式將它轉換成一段(通常更小)密文,也可以簡單的理解為取一串輸入碼(稱為預映射或信息),並把它們轉化為長度較短、位數固定的輸出序列即散列值(也稱為信息摘要或信息認證代碼)的過程。散列函數值可以說是對明文的一種「指紋」或是「摘要」所以對散列值的數字簽名就可以視為對此明文的數字簽名。
SHA-與MD的比較
因為二者均由MD導出,SHA-和MD彼此很相似。相應的,他們的強度和其他特性也是相似,但還有以下幾點不同:
對強行攻擊的安全性:最顯著和最重要的區別是SHA-摘要比MD摘要長 位。使用強行技術,產生任何一個報文使其摘要等於給定報摘要的難度對MD是^數量級的操作,而對SHA-則是^數量級的操作。這樣,SHA-對強行攻擊有更大的強度。
對密碼分析的安全性:由於MD的設計,易受密碼分析的攻擊,SHA-顯得不易受這樣的攻擊。
速度:在相同的硬體上,SHA-的運行速度比MD慢。
第四種.HMAC
HMAC(Hash Message Authentication Code,散列消息鑒別碼,基於密鑰的Hash演算法的認證協議。消息鑒別碼實現鑒別的原理是,用公開函數和密鑰產生一個固定長度的值作為認證標識,用這個標識鑒別消息的完整性。使用一個密鑰生成一個固定大小的小數據塊,即MAC,並將其加入到消息中,然後傳輸。接收方利用與發送方共享的密鑰進行鑒別認證等。
③ JAVA程序加密,怎麼做才安全急
眾所周知,java為開發語言提供了很方便的開發平台,但開發出來的程序很容易在不同的平台上面被移植,現在越來越多的人使用它開發軟體。
Java有它方便的一個方面,但它同時也帶給了開發者一個煩惱,這就是保護的辦法不多,而且大多數不是很好用,這樣自己辛苦開發出來的程序很容易被人復制而據為己有,一般情況下,大多數的人都是用混編器(java obfuscator)來把開發出來的程序進行打亂以達到沒有辦法來反編譯觀看源代碼,但是這種辦法在網上很容易找到相關的軟體來重新整理,那麼這個混編只能控制一些本來也沒有辦法動您的軟體的人,而對於一些掌握工具的人幾乎是透明的,還有就是利用硬體加密鎖,但大多數公司提供的硬體加密鎖只是提供了一些dll的連接或簡單的api調用,只要反編譯他們,就很容易把一些api調用去掉,這樣硬體加密鎖也就不起作用了,但是現在到底有沒有更好的辦法呢?
以色列阿拉丁公司提供的HASP HL加密鎖提供的外殼加密工具中有一個叫做數據加密的功能,這個功能就能很好的防止去除api的調用,各位都知道:硬體加密鎖的保護原理就是要你被加密過的軟體和加密鎖的硬體要緊緊地結合在一起,而且不容易被輕易的剔出原來的調用,這樣才能很好的保證您的軟體不被盜版,同時這種方式也很容易被程序員掌握,要對一個軟體實現保護,大約只需要幾分鍾的時間就可以了,下面簡單介紹一下他的原理:
運用阿拉丁公司提供的外殼工具先把調用你的java解釋器來進行加密,那麼就是說如果要運用這個解釋器就需要有一把特定的加密鎖存在,然後我們再運用它提供的外殼加密工具中的內容加密把你寫好的java程序當作一個文件來處理而對他進行加密,這個加密是採用的AES128位的演算法的,這樣這個加密過的數據文件——您的軟體就只能被您的保護過的java解釋器來進行解釋,但是如果沒有加密鎖就不能夠運行您的軟體,從而達到真正保護您的軟體的目的。
④ java加密的幾種方式
朋友你好,很高興為你作答。
首先,Java加密能夠應對的風險包括以下幾個:
1、核心技術竊取
2、核心業務破解
3、通信模塊破解
4、API介面暴露
本人正在使用幾維安全Java加密方式,很不錯,向你推薦,希望能夠幫助到你。
幾維安全Java2C針對DEX文件進行加密保護,將DEX文件中標記的Java代碼翻譯為C代碼,編譯成加固後的SO文件。默認情況只加密activity中的onCreate函數,如果開發者想加密其它類和方法,只需對相關類或函數添加標記代碼,在APK加密時會自動對標記的代碼進行加密處理。
與傳統的APP加固方案相比,不涉及到自定義修改DEX文件的載入方式,所以其兼容性非常好;其次Java函數被完全轉化為C函數,直接在Native層執行,不存在Java層解密執行的步驟,其性能和執行效率更優。
如果操作上有不明白的地方,可以聯系技術支持人員幫你完成Java加密。
希望以上解答能夠幫助到你。
⑤ java加密
可以的,但是對jar包直接加密,目前只支持J2SE,還不支持J2EE。更多的還是用混編器(java obfuscator)。下面是關於HASP的介紹。
-----------------------------------------------------
針對java加密防止反編譯的解決方案
眾所周知,java開發語言提供了很方便的開發平台,開發出來的程序很容易在不同的平台上被移植,現在越來越多的人使用它來開發軟體,與.net語言並駕齊驅。
Java有它方便的一面,同時也給開發者帶來了一個不小的煩惱,就是保護程序代碼變得困難,因為java語言編譯和代碼執行的特殊性,目前,除了HASP外,還沒有一個更好的解決辦法或保護方案,但如果不採取有力的措施,則自己辛辛苦苦開發出來的程序很容易被人復制而據為己有,一般情況下,大多數的人都是用混編器(java obfuscator)來把開發出來的程序進行打亂,以想達到防止反編譯的目的,但是,這種方法在網上很容易找到相關的軟體來重新整理,那麼這個混編器工具也只能控制一些本來就沒有辦法的人,而對於稍懂工具的人幾乎是透明的,沒有任何意義。再說硬體加密鎖,大多數廠商提供的加密鎖只能進行dll的連接或簡單的api調用,只要簡單地反編譯,就很容易把api去掉,這樣加密鎖根本起不了作用,那到底是否還有更好的解決辦法呢?
現提供2種解決辦法:
1、以色列阿拉丁公司的HASP HL加密鎖提供的外殼加密工具中,有一個叫做數據加密的功能,這個功能可以很好的防止反編譯而去掉api的調用,大家知道:硬體加密鎖的保護原理就是讓加密過的軟體和硬體緊密地連接在一起,調用不會輕易地被剔除,這樣才能持久地保護您的軟體不被盜版,同時,這種方式使用起來非常簡單,很容易被程序員掌握,要對一個軟體實現保護,大約只需幾分鍾的時間就可以了,下面簡單介紹一下它的原理:
運用HASP HL的外殼工具先把java解釋器進行加密,那麼,如果要啟動這個解釋器就需要有特定的加密鎖存在,然後,再運用外殼工具中的數據加密功能把java程序(CLASS或JAR包)當作一個數據文件來進行加密處理,生成新的java程序(CLASS或JAR包),因為這個加密過程是在鎖內完成的,並採用了128位的AES演算法,這樣,加密後的java程序,無論你採用什麼樣的反編譯工具,都是無法反編譯出來的。您的軟體也只有被加密過的java解釋器並有加密鎖的情況下才能正常運行,如果沒有加密鎖,程序不能運行,從而達到真正保護您的軟體的目的。
2、HASP HL提供專門針對java外殼加密工具,直接加密jar包,防止外編譯,目前只支持J2SE,將來會進一步支持J2EE,如果情況適合則是最簡單的方法。
⑥ 如何用java實現加密與解密
通常比較簡單的加密方法就是你把文本文件載入讀取以後,得到的每一個char加上一個固定的整數,然後再保存,這樣內容就看不懂了。
再讀取以後,把每一個char減去固定的整數,然後保存,就還原回來了。
這種方法是最最簡單的加密方式,不需要使用任何的加密演算法。
⑦ JAVA程序加密,怎麼做才安全
程序加密?你說的是代碼加密還是數據加密。我都說一下吧。
Java代碼加密:
這點因為Java是開源的,想達到完全加密,基本是不可能的,因為在反編譯的時候,雖然反編譯回來的時候可能不是您原來的代碼,但是意思是接近的,所以是不行的。
那麼怎麼增加反編譯的難度(閱讀難度),那麼可以採用多層繼承(實現)方式來解決,這樣即使反編譯出來的代碼,可讀性太差,復用性太差了。
Java數據加密:
我們一般用校驗性加密,常用的是MD5,優點是速度快,數據佔用空間小。缺點是不可逆,所以我們一般用來校驗數據有沒有被改動等。
需要可逆,可以選用base64,Unicode,缺點是沒有密鑰,安全性不高。
而我們需要可逆而且採用安全的方式是:對稱加密和非堆成加密,我們常用的有AES、DES等單密鑰和雙密鑰的方式。而且是各種語言通用的。
全部手動敲字,望採納,下面是我用Javascript方式做的一系列在線加密/解密工具:
http://www.sojson.com/encrypt.html
⑧ 如何對java的class類進行加密
可以使用Virbox Protector Standalone 加殼工具對java的class類進行加密,支持各種開發語言的程序加密。可防止代碼反編譯,更安全,更方便
產品簡介
Virbox Protector Standalone提供了強大的代碼虛擬化、高級混淆與智能壓縮技術,保護您的程序免受逆向工程和非法修改。
Virbox Protector Standalone 將被保護的程序代碼轉換為虛擬機代碼,程序運行時,虛擬機將模擬程序執行,進入和離開虛擬機都有高級代碼混淆。虛擬機配合代碼混淆可以達到很好的保護效果,尤其是開發者的私有邏輯。高級混淆利用花指令和代碼非等價變形等技術,將程序的代碼,轉換成一種功能上等價,但是難於閱讀和理解的代碼,可充分干擾靜態分析。應用程序的解壓縮含有動態密碼,讓一切自動脫殼工具失效,有效的阻止.Net、PE 程序的直接反編譯。
特點
多種加密策略:代碼虛擬化、高級混淆、智能壓縮
性能分析:智能分析引擎,一鍵分析各個函數模塊調用的次數
支持多種開發語言:多種開發語言加殼支持
源碼級保護:保護到匯編級別,c#保護IL級別
免費更新:免費版本升級