常用類庫-----Base64加密與解密

Base64是一種直接利用64個可打印字符來表示二進制數據的算法,也是在網絡傳輸中較爲常見的一種加密算法,從JDK 1.8版本開始提供有java.util.Base64的工具類,並且提供有兩個Base64的內部類實現數據加密與解密操作:
在這裏插入圖片描述
範例:實現Base64加密與解密操作

import java.util.Base64;

public class JavaAPIDemo378 {
       public static void main(String[] args) {
		String str="abcdefg";
		String enStr=new String(Base64.getEncoder().encode(str.getBytes()));//加密
		System.out.println(enStr);
		String oldStr=new String(Base64.getDecoder().decode(enStr));//解密
		System.out.println(oldStr);	
	}
}

執行結果

YWJjZGVmZw==
abcdefg

因爲這是一個公版算法,所以不安全,可以利用加鹽值"salt"的方式
範例:基於Base64定義複雜加密與解密操作

package com.lxh.fifteenchapter;

import java.util.Base64;

public class JavaAPIDemo379 {

	public static void main(String[] args) {
		String str=StringUtil.encode("ABCDEF");
	    System.out.println(str);//加密
	    System.out.println(StringUtil.decode(str));//解密
	}
}
class StringUtil{
	private static final String SALT="LLXX";// 公共的鹽值
	private static final int REPEAT=5;    //加密次數
	
	public static String encode(String str) {//加密處理
		String temp=str+"{"+SALT+"}";    //鹽值對外不公佈
		byte data[]=temp.getBytes();      //將字符串變爲字節數組
		for(int x=0;x<REPEAT;x++) {
			data=Base64.getEncoder().encode(data);
		}
		return new String(data);
	}
	public static String decode(String str) {//解密操作
		byte [] data=str.getBytes();   //獲取加密內容
		for (int i = 0; i < REPEAT; i++) {
			data=Base64.getDecoder().decode(data);// 多次解密
		}
		return new String(data).replaceAll("\\{\\w+\\}","");   //刪除鹽值格式
	}
}

執行結果

VmxaYVYxTXhTa2RUYTFwWFlUSlNjMVJWYUc5VWJGbDNWMjA1VUZWVU1Eaz0=
ABCDEF

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章