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==
解密后为:中国
上一篇: DES加密及解密封装
下一篇: Android的Base64加密解密