java必懂的冷知識點之Base64加密與解密
為了安全地進(jìn)行數(shù)據(jù)傳輸,就需要對數(shù)據(jù)進(jìn)行加密與解密操作,Base64就是Java提供的加密處理器。本博客主要講解Base64工具類的使用以及加密和解密信息操作實現(xiàn)。
Base64是一種直接利用64個可打印字符來表示二進(jìn)制數(shù)據(jù)的算法,也是網(wǎng)絡(luò)傳輸中較為常見的一種加密算法。從JDK1.8版本開始提供java.util.Base64的工具類,同時提供了兩個Base64的內(nèi)部類實現(xiàn)數(shù)據(jù)加密與解密操作。
【數(shù)據(jù)加密】java.util.Base64.Encoder, 對象獲取方法:public static Base64.Encoder getEncoder()。數(shù)據(jù)加密處理:public byte[] encoder(byte[] src)。
【數(shù)據(jù)解密】java.util.Base64.Decoder, 對象獲取方法:public static Base64.Decoder getDecoder()。
數(shù)據(jù)解密處理:public byte[] decoer (String src)。
### 范例:實現(xiàn)Base64加密與解密操作
package cn.mldn.demo; import java.util.Base64; public class JavaAPIDemo{ public static void main(String[] args) throws Exception{ String msg="www.mldn.cn"; //原始內(nèi)容 String encMsg=new String(Base64.getEncoder().encode(msg.getBytes()));//數(shù)據(jù)加密 System.out.println(encMsg); //輸出密文 String oldMsg=new String(Base64.getDecoder().decode(encMsg)); //數(shù)據(jù)解密 System.out.println(oldMsg); //輸出明文 } }
程序執(zhí)行結(jié)果:
d3d3Lm1sZG4uY24=(密文)
www.mldn.cn(明文)
本程序直接利用Base64提供的方法獲取了Base64.Encoder與Base64.Decoder實例化對象,并且對原始數(shù)據(jù)進(jìn)行了加密與解密處理。但需要注意的是,由于Base64屬于JDK的原始實現(xiàn),所以單純地加密是不安全的,此時為了獲取更加安全的數(shù)據(jù)加密操作,可以利用鹽值(salt)、自定義格式以及多次加密的方式來保證項目中的數(shù)據(jù)安全。
### 范例:基于Base64定義復(fù)雜加密與解密操作
package cn.mldn.demo; import java.util.Base64; class StringUtil { private static final String SALT="mldnjava"; //公共的鹽值 private static final int REPEAT=5; //加密次數(shù) public static String encode(String str) { //加密處理 String temp=str+"{"+SALT+"}"; //鹽值對外不公布 byte data[]=temp.getBytes(); //將字符串變?yōu)樽止?jié)數(shù)組 for(int x=0;x<REPEAT;x++) data=Base64.getEncoder().encode(data); //重復(fù)加密 return new String(data); //返回加密后的內(nèi)容 } public static String decode(String str) { byte data[]=str.getBytes(); //獲取加密內(nèi)容 for(int x=0;x<REPEAT;x++) data=Base64.getDecoder().decode(data); //多次解密 return new String(data).replaceAll("\\{\\w+\\}",""); //刪除鹽值格式 } } public class JavaAPIDemo{ public static void main(String[] args) throws Exception{ String str=StringUtil.encode("www.mldn.cn"); System.out.println(StringUtil.decode(str)); } }
本程序基于Base64類的功能實現(xiàn)了一個自定義加密與解密程序,為了保證加密后的數(shù)據(jù)安全,采用的鹽值格式為“鹽值{原始數(shù)據(jù)}”,同時利用多次加密的形式確保了密文數(shù)據(jù)的可靠性。在實際開發(fā)中只要不對外公布鹽值內(nèi)容和加密次數(shù)就可以在較為安全的環(huán)境下進(jìn)行數(shù)據(jù)傳輸.
到此這篇關(guān)于java必懂的冷知識點之Base64加密與解密的文章就介紹到這了,更多相關(guān)java Base64加密與解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
plantuml畫圖實現(xiàn)代碼畫時序圖UML用例圖
這篇文章主要為大家介紹了plantuml畫圖實現(xiàn)代碼畫時序圖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Java使用itext5實現(xiàn)生成多個PDF并合并
這篇文章主要為大家詳細(xì)介紹了Java如何使用itext5實現(xiàn)生成多個PDF并合并,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2025-04-04feign客戶端HTTP狀態(tài)碼為204時?響應(yīng)體被忽略的問題
這篇文章主要介紹了feign客戶端HTTP狀態(tài)碼為204時?響應(yīng)體被忽略的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-03-03springboot返回值轉(zhuǎn)成JSONString的處理方式
這篇文章主要介紹了springboot返回值轉(zhuǎn)成JSONString的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06springBoot項目中的static和templates文件夾的使用
本文主要介紹了springBoot項目中的static和templates文件夾的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-07-07Java CountDownLatch應(yīng)用場景代碼實例
這篇文章主要介紹了Java CountDownLatch應(yīng)用場景代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09