欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Base64加密与解密

程序员文章站 2024-03-14 13:24:58
...

Base64加密与解密

  • Base64是一种直接利用64个可打印字符来表示二进制数据的算法,也是在网络传输总较为常见的一种加密算法。从JDK 1.8 版本开始提供 java.util.Base64 的工具类,同时也提供了两个Base64的内部类实现数据加密与解密操作

实现加密解密操作

public class Base64Learn {
    public static void main(String[] args) {
        String msg = "www.ltq.com";
        String encMsg = new String(Base64.getEncoder().encode(msg.getBytes()));//加密
        System.out.println(encMsg);
        String oldMsg = new String(Base64.getDecoder().decode(encMsg));//解密
        System.out.println(oldMsg);
    }
}

打印结果为:

d3d3Lmx0cS5jb20=
www.ltq.com

由于Base64 属于JDK 的原始实现,所以单纯的加密是不安全的,此时为了获取更加安全的加密操作,可以利用盐值(salt)自定义格式以及多次加密的方式来保证项目中数据的安全

基于Base64定义复杂加密与解密操作

package com.ltq.base;

import java.util.Base64;
import java.util.Scanner;

/**
 * Title:com.ltq.base
 * Description: 描述【基于Base64定义复杂加密与解密操作】
 * Copyright: Copyright (c) 2019
 * Company: LTQ科技
 *
 * @author leitianquan
 * @version 1.0
 * @created 2019/10/17 15:19
 */
public class BaseLearn02 {
    public static void main(String[] args) {
        String str = StringUtil.encode("tianquan");
        System.out.println(str);
        String str2 = StringUtil.decode(str);
        System.out.println(str2);
        Scanner scanner = new Scanner(System.in);
        String enen = scanner.next();
        String enenc = StringUtil.encode(enen);
        System.out.println("输入的字符串加密后为:" + enenc);
        System.out.println("解密后为:" + StringUtil.decode(enenc));
    }

}

/**
 * @Description: 定义一个字符串操作类,提供字符串的辅助处理功能
 * @Date: 15:21 2019/10/17
 **/
class StringUtil {
    private static final String SALT = "leitianquan";//公共的盐值
    private static final int REPEAT = 5;//加密次数

    /**
     * @Description: 加密处理
     * @Date: 15:26 2019/10/17
     * @Param: [str] 所要加密的字符串
     * @return: java.lang.String
     **/
    public static String encode(String str) {
        String temp = str + "{" + SALT + "}";
        byte data[] = temp.getBytes();//将字符串变为字节数组
        for (int i = 0; i < REPEAT; i++) {
            data = Base64.getEncoder().encode(data);
        }
        return new String(data);
    }

    /**
     * @Description: 解密处理
     * @Date: 15:29 2019/10/17
     * @Param: [str] 所要解密的字符串
     * @return: java.lang.String
     **/
    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+\\}", "");
    }
}

打印结果为:

VjJ0V2EyTXlSa2hUYmxaVFlXdGFZVlp1Y0ZaTk1XeHlXa1prYWxJeFNrbFphMlJ2WVZkS2NsZFlhRmhXYlUxNFZERkZPVkJSUFQwPQ==
tianquan
中国
输入的字符串加密后为:Vkd4V05HTkhVa1ZXYlVaclZrZDRjMVJYTlc5ak1XeFhZVVpPYWxKdGVGbFViR2h2WVRGWmQxZHFSbUZpUlZVMVZVWkZPVkJSUFQwPQ==
解密后为:中国
相关标签: Base64加密与解密