Java Base64加密与解密记录
【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流
才可以进行多次加密和解密。