久染

导航

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流

才可以进行多次加密和解密。

posted on 2019-11-24 21:09  久染  阅读(1227)  评论(0编辑  收藏  举报