原創(chuàng)|行業(yè)資訊|編輯:胡濤|2022-10-26 10:43:26.930|閱讀 269 次
概述:本文主要向大家介紹Java常用到的6個(gè)加密技術(shù),希望能幫助到大家~
# 界面/圖表報(bào)表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
加密,是以某種特殊的算法改變?cè)械男畔?shù)據(jù),使得未授權(quán)的用戶即使獲得了已加密的信息,但因不知解密的方法,仍然無(wú)法了解信息的內(nèi)容。大體上分為雙向加密和單向加密,而雙向加密又分為對(duì)稱加密和非對(duì)稱加密(有些資料將加密直接分為對(duì)稱加密和非對(duì)稱加密)。
雙向加密大體意思就是明文加密后形成密文,可以通過(guò)算法還原成明文。而單向加密只是對(duì)信息進(jìn)行了摘要計(jì)算,不能通過(guò)算法生成明文,單向加密從嚴(yán)格意思上說(shuō)不能算是加密的一種,應(yīng)該算是摘要算法吧。
目前市場(chǎng)上已經(jīng)有很多比較成熟的代碼加密的軟件,企業(yè)已經(jīng)可以通過(guò)購(gòu)買很多技術(shù)來(lái)對(duì)自己的數(shù)據(jù)加以保護(hù),加密是安全的一個(gè)方重要方面,特別是對(duì)于程序開(kāi)發(fā)企業(yè)和個(gè)人來(lái)說(shuō),下面小編就給大家簡(jiǎn)單介紹下java常用的幾個(gè)代碼加密技術(shù)~
從現(xiàn)在加密算法的復(fù)雜性來(lái)看Base64這種都不好意思說(shuō)自己是加密,不過(guò)對(duì)于完全不懂計(jì)算機(jī)的人來(lái)說(shuō)也夠用了。采用Base64編碼具有不可讀性,即所編碼的數(shù)據(jù)不會(huì)被人用肉眼所直接看到。
Base64編碼一般用于url的處理,或者說(shuō)任何你不想讓普通人一眼就知道是啥的東西都可以用Base64編碼處理后再發(fā)布在網(wǎng)絡(luò)上。
消息摘要(Message Digest)又稱為數(shù)字摘要(Digital Digest)。它是一個(gè)唯一對(duì)應(yīng)一個(gè)消息或文本的固定長(zhǎng)度的值,它由一個(gè)單向Hash加密函數(shù)對(duì)消息進(jìn)行作用而產(chǎn)生。HASH函數(shù)的抗沖突性使得如果一段明文稍有變化,哪怕只更改該段落的一個(gè)字母,通過(guò)哈希算法作用后都將產(chǎn)生不同的值。而HASH算法的單向性使得要找到哈希值相同的兩個(gè)不同的輸入消息,在計(jì)算上是不可能的。所以數(shù)據(jù)的哈希值,即消息摘要,可以檢驗(yàn)數(shù)據(jù)的完整性。
用大白話來(lái)說(shuō),任何一段數(shù)據(jù)應(yīng)該都和人一樣是唯一的,唯一的標(biāo)識(shí)是什么,人類的話目前就是指紋,而數(shù)據(jù)的指紋是什么呢?沒(méi)錯(cuò),就是消息摘要算法產(chǎn)生的這一段String。比如我們?cè)谧?cè)網(wǎng)站的時(shí)候,客戶端向服務(wù)器傳輸?shù)模瑧?yīng)該是我們輸入的密碼進(jìn)行消息摘要處理后的內(nèi)容,這樣就算服務(wù)器被攻破,Hack也無(wú)法知道用戶真實(shí)的密碼是什么。不過(guò)有說(shuō)現(xiàn)在MD5和SHA已經(jīng)被攻破了,具體大家可以谷歌。
采用單鑰密碼系統(tǒng)的加密方法,同一個(gè)密鑰可以同時(shí)用作信息的加密和解密,這種加密方法稱為對(duì)稱加密,也稱為單密鑰加密。而因?yàn)榧用芎徒饷芏际褂猛粋€(gè)密鑰,如何把密鑰安全地傳遞到解密者手上就成了必須要解決的問(wèn)題。當(dāng)然,安全性較低帶來(lái)的優(yōu)點(diǎn)就是優(yōu)計(jì)算量小、加密速度快、加密效率高。然而現(xiàn)代計(jì)算機(jī)對(duì)這種級(jí)別的計(jì)算量早就不care了,安全才是最重要的。
(1) DES
DES,全稱為“Data Encryption Standard”,中文名為“數(shù)據(jù)加密標(biāo)準(zhǔn)”,是一種使用密鑰加密的塊算法。DES 算法為密碼體制中的對(duì)稱密碼體制,又被稱為美國(guó)數(shù)據(jù)加密標(biāo)準(zhǔn),是 1972 年美國(guó) IBM 公司研制的對(duì)稱密碼體制加密算法。 明文按 64 位進(jìn)行分組,密鑰長(zhǎng) 64 位,密鑰事實(shí)上是 56 位參與 DES 運(yùn)算(第8、16、24、32、40、48、56、64 位是校驗(yàn)位, 使得每個(gè)密鑰都有奇數(shù)個(gè) 1)分組后的明文組和 56 位的密鑰按位替代或交換的方法形成密文組的加密方法。
(2)Triple DES
3DES3DES,也就是“Triple DES”,中文名“三重?cái)?shù)據(jù)加密算法”,它相當(dāng)于是對(duì)每個(gè)數(shù)據(jù)塊應(yīng)用三次 DES 加密算法。由于計(jì)算機(jī)運(yùn)算能力的增強(qiáng),原版 DES 密碼的密鑰長(zhǎng)度變得容易被暴力破解;3DES 即是設(shè)計(jì)用來(lái)提供一種相對(duì)簡(jiǎn)單的方法,即通過(guò)增加 DES 的密鑰長(zhǎng)度來(lái)避免類似的攻擊,而不是設(shè)計(jì)一種全新的塊密碼算法。
(3)AESAES
AESAES,全稱為“Advanced Encryption Standard”,中文名“高級(jí)加密標(biāo)準(zhǔn)”,在密碼學(xué)中又稱 Rijndael 加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。AES 加密算法作為新一代的數(shù)據(jù)加密標(biāo)準(zhǔn)匯聚了強(qiáng)安全性、高性能、高效率、易用和靈活等優(yōu)點(diǎn)。AES 設(shè)計(jì)有三個(gè)密鑰長(zhǎng)度:128,192,256 位。相對(duì)而言,AES 的 128 密鑰比 DES 的 56 密鑰強(qiáng)了 1021 倍。
(4)PBE
PBE,全稱為“Password Base Encryption”,中文名“基于口令加密”,是一種基于密碼的加密算法,其特點(diǎn)是使用口令代替了密鑰,而口令由用戶自己掌管,采用隨機(jī)數(shù)雜湊多重加密等方法保證數(shù)據(jù)的安全性。
PBE算法沒(méi)有密鑰的概念,把口令當(dāng)做密鑰了。因?yàn)槊荑€長(zhǎng)短影響算法安全性,還不方便記憶,這里我們直接換成我們自己常用的口令就大大不同了,便于我們的記憶。但是單純的口令很容易被字典法給窮舉出來(lái),所以我們這里給口令加了點(diǎn)“鹽”,這個(gè)鹽和口令組合,想破解就難了。同時(shí)我們將鹽和口令合并后用消息摘要算法進(jìn)行迭代很多次來(lái)構(gòu)建密鑰初始化向量的基本材料,使破譯更加難了。
非對(duì)稱加密算法需要兩個(gè)密鑰來(lái)進(jìn)行加密和解密,分別是公鑰和私鑰。需要注意的一點(diǎn),這個(gè)公鑰和私鑰必須是一對(duì)的,如果用公鑰對(duì)數(shù)據(jù)進(jìn)行加密,那么只有使用對(duì)應(yīng)的私鑰才能解密,反之亦然。由于加密和解密使用的是兩個(gè)不同的密鑰,因此,這種算法叫做非對(duì)稱加密算法。
其實(shí),在早在 1978 年的時(shí)候,RSA就已經(jīng)出現(xiàn)了,它是第一個(gè)既能用于數(shù)據(jù)加密也能用于數(shù)字簽名的算法。它易于理解和操作,也很流行。其原理就如上面的工作過(guò)程所述。RSA 算法基于一個(gè)十分簡(jiǎn)單的數(shù)論事實(shí):將兩個(gè)大素?cái)?shù)相乘十分容易,但是想要對(duì)其乘積進(jìn)行因式分解卻極其困難,因此可以將乘積公開(kāi)作為加密密鑰。
DH,全稱為“Diffie-Hellman”,他是一種確保共享KEY安全穿越不安全網(wǎng)絡(luò)的方法,也就是常說(shuō)的密鑰一致協(xié)議。由公開(kāi)密鑰密碼體制的奠基人Diffie和Hellman所提出的一種思想。簡(jiǎn)單的說(shuō)就是允許兩名用戶在公開(kāi)媒體上交換信息以生成“一致”的、可以共享的密鑰。也就是由甲方產(chǎn)出一對(duì)密鑰(公鑰、私鑰),乙方依照甲方公鑰產(chǎn)生乙方密鑰對(duì)(公鑰、私鑰)。
以此為基線,作為數(shù)據(jù)傳輸保密基礎(chǔ),同時(shí)雙方使用同一種對(duì)稱加密算法構(gòu)建本地密鑰(SecretKey)對(duì)數(shù)據(jù)加密。這樣,在互通了本地密鑰(SecretKey)算法后,甲乙雙方公開(kāi)自己的公鑰,使用對(duì)方的公鑰和剛才產(chǎn)生的私鑰加密數(shù)據(jù),同時(shí)可以使用對(duì)方的公鑰和自己的私鑰對(duì)數(shù)據(jù)解密。不單單是甲乙雙方兩方,可以擴(kuò)展為多方共享數(shù)據(jù)通訊,這樣就完成了網(wǎng)絡(luò)交互數(shù)據(jù)的安全通訊!
WinLicense是一個(gè)強(qiáng)勁的保護(hù)系統(tǒng), 專為了那些想保護(hù)自己的程式不被先進(jìn)的反向工程和黑客軟件破解的軟件開(kāi)發(fā)者而開(kāi)發(fā)的。開(kāi)發(fā)者不需要更改任何的原代碼,不需要程式編制的經(jīng)驗(yàn)就可使用WinLicense。
VMProtect 是新一代的軟件保護(hù)系統(tǒng),將保護(hù)后的代碼放到虛擬機(jī)中運(yùn)行,這將使分析反編譯后的代碼和破解變得極為困難。使用 MAP 文件或內(nèi)建的反編譯引擎,您可以快速選擇需要保護(hù)的代碼。
.NET Reactor是用于為.NET Framework編寫的軟件的功能強(qiáng)大的代碼保護(hù)和軟件許可系統(tǒng),并且支持生成.NET程序集的所有語(yǔ)言。
.NET Reactor支持所有的dotnet實(shí)現(xiàn),包括.NET Framework、.NET 5.0、.NET Core和ASP.NET Core。通過(guò)這種方式,Xamarin、Unity和Blazor組件得到了全面的保護(hù)支持。
Allatori Java obfuscator是第二代Java代碼混淆器,為您的知識(shí)產(chǎn)權(quán)提供全方位的保護(hù)。大部分第二代混淆器都具有保護(hù)功能。Allatori除了保護(hù)功能之外,還附加了一系列的功能,幾乎可以抵御一切的代碼攻擊。同時(shí),Allatori可以讓您的程序體積更小,速度更快,效果簡(jiǎn)直讓人難以置信。
dotNet Protector 是一個(gè)功能強(qiáng)大的.NET代碼保護(hù)系統(tǒng),它可以防止程序集被反編譯。dotNet Protector使用的是一個(gè)新的主體混淆技術(shù)保護(hù)應(yīng)用程序和組件。程序集不再需要合并到一個(gè)win32可執(zhí)行文件中,但是會(huì)保留其.net特性。dotNet Protector 采用一個(gè)命名混淆器結(jié)合一個(gè)主體混淆器來(lái)保護(hù)您的代碼。
Themida是一個(gè)強(qiáng)勁的保護(hù)系統(tǒng), 專為了那些想保護(hù)自己的程式不被先進(jìn)的逆向工程和黑客軟件破解的軟件開(kāi)發(fā)者而開(kāi)發(fā)的。開(kāi)發(fā)者不需要更改任何的原代碼,和不需要程式編制的經(jīng)驗(yàn)使用WinLicense。
Themida使用SecureEngine®的保護(hù)技術(shù)。它能夠以最高的優(yōu)先等級(jí)運(yùn)行,這些保護(hù)技巧是從來(lái)都沒(méi)在電腦防御技術(shù)領(lǐng)域出現(xiàn)過(guò),使它
Code Virtualizer 是一個(gè)強(qiáng)大的代碼攪亂系統(tǒng)。它可以幫助軟件開(kāi)發(fā)者保護(hù)他們軟件內(nèi)重要和敏感的代碼區(qū),防止他人使用逆向工程,而且它只消耗最小的系統(tǒng)資源。
代碼加密,程序保護(hù)始終是信息安全和程序保護(hù)的很重要的一部分,隨著技術(shù)的進(jìn)步,很多老的技術(shù)將會(huì)被逐步破解和淘汰,新技術(shù)也將源源不斷的被開(kāi)發(fā)出來(lái),目前市場(chǎng)對(duì)于信息安全需求源源不斷的增加,市面上現(xiàn)存的諸如VMProtect、WinLicense這樣致力于服務(wù)代碼加密混淆的軟件廠商技術(shù)也越趨成熟,以前需要繁瑣步驟才能完成的加密步驟,也隨著這些廠商的出現(xiàn)變得愈發(fā)高效。
備注:以上內(nèi)容來(lái)自于網(wǎng)絡(luò)整理,如有侵權(quán),請(qǐng)聯(lián)系刪除
歡迎體驗(yàn)更多加密解密相關(guān)軟件或者加入我們技術(shù)交流群(766135708)
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn