3DES加密算法

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。由于计算机运算能力的增强,原版DES密码的密钥长度变得容易被暴力破解;3DES即是设计用来提供一种相对简单的方法,即通过增加DES的密钥长度来避免类似的攻击,而不是设计一种全新的块密码算法

3DES(即Triple DES)是DES向AES过渡的加密算法(1999年,NIST将3-DES指定为过渡的加密标准),加密算法,其具体实现如下:设Ek()和Dk()代表DES算法的加密和解密过程,K代表DES算法使用的密钥,M代表明文,C代表密文,这样:

3DES加密过程为:C=Ek3(Dk2(Ek1(M)))
3DES解密过程为:M=Dk1(EK2(Dk3©))

贴代码!!!!!!!!!!!!!!!!!!!!!

加密算法:

/**
	 * 使用3DES算法对目标数据执行加密操作
	 * @author knight
	 * @param key 192位的加密key
	 * @param src 需要加密的数据
	 * @return byte[] 执行加密后的数据
	 */
	public static byte[] encrypt(byte[] key,byte []src) {
		byte[] value=null;
		try {
			/*生成秘钥key*/
			SecretKeySpec deskey = new SecretKeySpec(key,ALGORITHM); 
			/*对目标数据执行加密操作*/
			Cipher cipher = Cipher.getInstance(ALGORITHM);
			cipher.init(Cipher.ENCRYPT_MODE, deskey);
			value=cipher.doFinal(src);
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		return value;
	}

解密算法:

/**
	 * 使用3DES算法对目标数据执行解密操作
	 * @author knight
	 * @param key 192位的加密key
	 * @param src 需要执行解密的数据
	 * @return byte[] 执行解密后的数据
	 */
	public static byte[] decrypt(byte []key,byte[] src) {
		byte []value=null;
		try {
			/*生成秘钥key*/
			SecretKeySpec deskey = new SecretKeySpec(key, ALGORITHM);
			/*对目标数据执行解密操作*/
			Cipher cipher=Cipher.getInstance(ALGORITHM);
			cipher.init(Cipher.DECRYPT_MODE, deskey);
			value=cipher.doFinal(src);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return value;
	}

结果

3DES加密算法_第1张图片

是不是很简单啊?

源码

package com.wrf.encrypt;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

import org.junit.jupiter.api.Test;

public class Use3DES {
	/*定义需要使用的加解密算法*/
	
	//定义加密算法 可用
	private static final String ALGORITHM="DESede";
	
	/**
	 * 使用3DES算法对目标数据执行加密操作
	 * @author knight
	 * @param key 192位的加密key
	 * @param src 需要加密的数据
	 * @return byte[] 执行加密后的数据
	 */
	public static byte[] encrypt(byte[] key,byte []src) {
		byte[] value=null;
		try {
			/*生成秘钥key*/
			SecretKeySpec deskey = new SecretKeySpec(key,ALGORITHM); 
			/*对目标数据执行加密操作*/
			Cipher cipher = Cipher.getInstance(ALGORITHM);
			cipher.init(Cipher.ENCRYPT_MODE, deskey);
			value=cipher.doFinal(src);
		}catch (Exception e) {
			e.printStackTrace();
		}
		
		return value;
	}
	
	/**
	 * 使用3DES算法对目标数据执行解密操作
	 * @author knight
	 * @param key 192位的加密key
	 * @param src 需要执行解密的数据
	 * @return byte[] 执行解密后的数据
	 */
	public static byte[] decrypt(byte []key,byte[] src) {
		byte []value=null;
		try {
			/*生成秘钥key*/
			SecretKeySpec deskey = new SecretKeySpec(key, ALGORITHM);
			/*对目标数据执行解密操作*/
			Cipher cipher=Cipher.getInstance(ALGORITHM);
			cipher.init(Cipher.DECRYPT_MODE, deskey);
			value=cipher.doFinal(src);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
		return value;
	}
	
	@Test
	public void run() {
		try {
			byte[] key="01234567899876543210abcd".getBytes();
			byte[] encoded=encrypt(key, "测试数据...".getBytes("UTF-8"));
			System.out.println("加密后的数据->"+new String(encoded));
			System.out.println("解密后的数据->"+new String(decrypt(key, encoded),"UTF-8"));
		}catch (Exception e) {
			e.printStackTrace();
		}
		
	}
	
	

}

祝各位看官学习快乐!!!!!!!!!!!!!

你可能感兴趣的:(语言框架)