欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java必懂的冷知識點之Base64加密與解密

 更新時間:2021年03月15日 14:45:08   作者:祖國未來的小碼農(nóng)  
這篇文章主要介紹了java必懂的冷知識點之Base64加密與解密的相關(guān)資料,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

為了安全地進(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)代碼畫時序圖UML用例圖

    這篇文章主要為大家介紹了plantuml畫圖實現(xiàn)代碼畫時序圖示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 里氏代換原則_動力節(jié)點Java學(xué)院整理

    里氏代換原則_動力節(jié)點Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了里氏代換原則的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java使用itext5實現(xiàn)生成多個PDF并合并

    Java使用itext5實現(xiàn)生成多個PDF并合并

    這篇文章主要為大家詳細(xì)介紹了Java如何使用itext5實現(xiàn)生成多個PDF并合并,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • feign客戶端HTTP狀態(tài)碼為204時?響應(yīng)體被忽略的問題

    feign客戶端HTTP狀態(tài)碼為204時?響應(yīng)體被忽略的問題

    這篇文章主要介紹了feign客戶端HTTP狀態(tài)碼為204時?響應(yīng)體被忽略的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • springboot返回值轉(zhuǎn)成JSONString的處理方式

    springboot返回值轉(zhuǎn)成JSONString的處理方式

    這篇文章主要介紹了springboot返回值轉(zhuǎn)成JSONString的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Dubbo3和Spring?Boot整合過程源碼解析

    Dubbo3和Spring?Boot整合過程源碼解析

    Dubbo首先是提供了一個單獨的模塊來和Spring Boot做整合,利用 Spring Boot自動裝配的功能,配置了一堆自動裝配的組件,本文介紹Dubbo3和Spring?Boot整合過程,需要的朋友一起看看吧
    2023-08-08
  • java實現(xiàn)鮮花銷售系統(tǒng)

    java實現(xiàn)鮮花銷售系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java實現(xiàn)鮮花銷售系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-06-06
  • Mybatis中的@Select、foreach用法

    Mybatis中的@Select、foreach用法

    這篇文章主要介紹了Mybatis中的@Select、foreach用法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • springBoot項目中的static和templates文件夾的使用

    springBoot項目中的static和templates文件夾的使用

    本文主要介紹了springBoot項目中的static和templates文件夾的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-07-07
  • Java CountDownLatch應(yīng)用場景代碼實例

    Java CountDownLatch應(yīng)用場景代碼實例

    這篇文章主要介紹了Java CountDownLatch應(yīng)用場景代碼實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09

最新評論