(Biblioteca de soporte de desarrollo) Cifrado y descifrado Base64

Cifrado y descifrado Base64

Normalmente, la encriptación siempre va acompañada básicamente de desencriptación, la denominada encriptación o desencriptación a menudo requiere algunas reglas. Desde JDK1.8 se ha proporcionado un nuevo conjunto de clases de procesamiento de cifrado, procesamiento Base64. Hay dos clases internas en esta clase:

  • Base64.Encoder: realiza el procesamiento de cifrado;
  • codificación de byte [] público (byte [] src) Utilice el esquema de codificación Base64 para codificar todos los bytes en la matriz de bytes especificada en la matriz de bytes recién asignada
  • Base64.Decoder: Realice el proceso de descifrado;
  • decodificación de byte público [] (byte [] src): use el esquema de codificación Base64 para decodificar todos los bytes en la matriz de bytes de entrada y escriba el resultado en la matriz de bytes de salida recién asignada.

Ejemplo: implementar operaciones de cifrado y descifrado

 

package 开发支持类库;

import java.util.Base64;

public class Base64类 {
	public static void main(String[] args) {
		//加密
		String msg = "加密内容";		//要发送的信息内容
		//getEncoder()返回一个Base64编码方案,encode利用此方法进行加密
		byte[] enMsg =  Base64.getEncoder().encode(msg.getBytes());	//数据加密
		String enString = new String(enMsg);	//转换为String
		System.out.println("加密后:"+enString);
		
		//解密
		byte[] deMsg = Base64.getDecoder().decode(enMsg); //解密,getDecoder()返回一个Base64编码方案,decode进行解密
		String deString = new String(deMsg);
		System.out.println("解密结果:"+deString);
	}
}

Después del cifrado: vNPD3MTayN0 =
Resultado del descifrado: contenido cifrado

Aunque Base64 puede implementar el procesamiento de cifrado y descifrado, es una versión pública del algoritmo, por lo que a menudo no es seguro cifrar datos directamente, por lo que la mejor forma es utilizar la operación de sal .

String salt = "javaDemo";	//定义盐值
String msg = "加密内容"+"{"+salt+"}";		//加上了盐值,数据不只有加密内容

Incluso si el valor de la sal realmente encuentra que el efecto del cifrado no es muy bueno, la mejor manera es cifrar varias veces.

Ejemplo: operación de cifrado compleja

package 开发支持类库;

import java.util.Base64;

public class Base64类 {
	public static void main(String[] args) {
		//加密
		String str =StringUtil.encode("加密内容") ;
		System.out.println(str);
		
		//解密
		str = StringUtil.decode(str);
		System.out.println(str);
	}
}


class StringUtil{
	private static final String SALT = "盐值";	//公共的盐值
	private static final int RPEAT = 3;	//加密次数
 	/**
	 * 加密处理
	 * @param str	要加密的字符串,需要与盐值整合
	 * @return	加密后的数据
	 */
	public static String encode(String str) {	//加密处理
		String temp = str +"{"+SALT+"}";	//盐值对外不公布
		byte data[] = temp.getBytes();	//将字符串变为字节数组
		
		for(int x = 0;x <RPEAT ;x++) {
			data = Base64.getEncoder().encode(data);	//重复加密
		}
		
		return  new String(data);	//字节数组转为字符串,返回加密结果
		
	}
	
	/**
	 * 解密处理
	 * @param str	解密的字符串
	 * @return 解密后的内容
	 */
	public static String decode(String str) {
		byte data[] = str.getBytes();//将字符串变为字节数组
		
		for(int x = 0;x <RPEAT ;x++) {
			data = Base64.getDecoder().decode(data);	//重复解密,之前加密多少次就解密多少次
		}
		
		return new String(data).replaceAll("\\{\\S+\\}", "");//S表示任何非空格的字符,将括号和里面所有内容替换成null,字节数组转为字符串,返回解密结果
		
	}
}

ZGs1UVJETk5WR0Y1VGpFM01HTTNWM1JZTUQwPQ ==
contenido encriptado

Es mejor usar 2-3 programas de encriptación y encontrar algunos métodos de encriptación que no se puedan encriptar por completo.

Supongo que te gusta

Origin blog.csdn.net/weixin_46245201/article/details/112601248
Recomendado
Clasificación