【Base64加密與解密記錄】
Base64多次加密和解密后不是初始消息問題:
import java.util.Base64; class encod { private final static String SALT = "Tsy"; //添加鹽值,增加解密難度 private final static int REPART = 5; //設定加密次數,次數越多解密越難,但是會增加垃圾空間(原因是進行了字符串的修改) public static String encode(String msg) { String tsy = msg + "{" + SALT + "}"; byte[] date = tsy.getBytes(); for (int i = 0; i < REPART; i++) { date = Base64.getEncoder().encode(date); } return new String(date); } public static String decode(String msg) { byte[] date = msg.getBytes(); for (int i = 0; i <REPART; i++) { date = Base64.getDecoder().decode(date); } return new String(date).replace("{Tsy}", ""); } } public class T { public static void main(String[] args) { String msg1 = "Tsyscv"; System.out.println(msg1.hashCode()); String msg = encod.encode("www.mldn.cn"); System.out.println(msg); System.out.println(encod.decode(msg)); } }
使用Java.util中的Base64進行五次帶鹽值加密后,再進行解密,發現消息並不是我們原本發送的消息,原因是Base64.getDecoder().decode(byte[])和Base64.getDecoder().decode(Bytebuffer)倆個decode傳入的參數不一樣,只有使用decode傳入byte流
才可以進行多次加密和解密。