(Bibliothèque de support de développement) Cryptage et décryptage Base64

Cryptage et décryptage Base64

Normalement, le cryptage est toujours accompagné d'un décryptage, ce que l'on appelle le cryptage ou le décryptage nécessite souvent certaines règles. Un nouvel ensemble de classes de traitement de chiffrement, le traitement Base64, a été fourni depuis JDK1.8. Il existe deux classes internes dans cette classe:

  • Base64.Encoder: effectuer le traitement de cryptage;
  • public byte [] encode (byte [] src) Utilisez le schéma de codage Base64 pour encoder tous les octets du tableau d'octets spécifié dans le tableau d'octets nouvellement alloué
  • Base64.Decoder: effectuer le traitement de décryptage;
  • public byte [] decode (byte [] src): Utilisez le schéma de codage Base64 pour décoder tous les octets du tableau d'octets d'entrée et écrire le résultat dans le tableau d'octets de sortie nouvellement alloué.

Exemple: implémenter des opérations de chiffrement et de déchiffrement

 

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);
	}
}

Après le chiffrement: vNPD3MTayN0 =
Résultat du déchiffrement: contenu chiffré

Bien que Base64 puisse implémenter le traitement de cryptage et de décryptage, il s'agit d'une version publique de l'algorithme, il n'est donc souvent pas sûr de crypter directement les données, le meilleur moyen est donc d'utiliser l' opération Salt .

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

Même si la valeur salt trouve en fait que l'effet du chiffrement n'est pas très bon, le meilleur moyen est de chiffrer plusieurs fois.

Exemple: opération de chiffrement complexe

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 ==
contenu crypté

Il est préférable d'utiliser 2-3 programmes de cryptage et de trouver des méthodes de cryptage totalement indéchiffrables.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_46245201/article/details/112601248
conseillé
Classement