Java简单实现DES加密解密算法

时间:2025-01-31 13:55:48

Java简单实现DES加密解密算法

文章目录

  • Java简单实现DES加密解密算法
      • DES算法介绍
      • 实现相关java类
      • 代码实现

DES算法介绍

DEC加密算法属于对称加密,即利用指定的密钥,按照密码的长度截取数据,分成数据块,和密钥进行复杂的移位、算数运算或者数据处理等操作,形成只有特定的密码才能够解开的数据。 加密与解密用的是同一个密钥,即加密密钥等于解密密钥,加密密钥和解密密钥可以相互推倒出来。

实现相关java类

:Key类是Java加密的所有父类
:指定安全策略组
:生成算法对象
4.BASE64Encoder和BASE64Decoder:通过base64位完成byte和String的相互转换
:这是一个重点类
Java/Android要使用任何加密,都需要使用Cipher这个类
Cipher cipher = (“算法名称”)
(加密/解密模式,Key秒),Cipher.DECRYPT_MODE 解密;Cipher.ENCRYPT_MODE 加密
即:加密:(Cipher.ENCRYPT_MODE, key);解密:(Cipher.DECRYPT_MODE, key);
调用doFinal()方法完成单步的加密或解密数据;如果是多组数据,需要用到updata();

代码实现

import ;
import ;
import ;
import ;
import .BASE64Decoder;
import .BASE64Encoder;
//去除警告
@SuppressWarnings("restriction")
public class DESUtil {
	private static Key key;
	//设置密钥key
	private static String KEY_STR = "myKey";
	private static String CHARSETNAME = "UTF-8";
	private static String ALGORITHM = "DES";
	static {
		try {
			//生成DES算法对象
			KeyGenerator generator = (ALGORITHM);
			//运用SHA1安全策略
			SecureRandom secureRandom = ("SHA1PRNG");
			//设置密钥种子
			(KEY_STR.getBytes());
			//初始化基于SHA1的算法对象
			(secureRandom);
			//生成密钥对象
			key = ();
			generator = null;
		} catch (Exception e) {
			throw new RuntimeException(e);
		}
	}
	//加密函数
	public static String getEncryptString(String str) {
		BASE64Encoder base64encoder = new BASE64Encoder();
		try {
			//按utf-8编码
			byte[] bytes = (CHARSETNAME);
			//获取加密对象
			Cipher cipher = (ALGORITHM);
			//初始化加密信息
			(Cipher.ENCRYPT_MODE, key);
			//加密
			byte[] doFinal = (bytes);
			//byte to encode好的String返回
			return (doFinal);
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}
	}
	//解密函数
	public static String getDecryptString(String str) {
		//接受byte[]并转换成String
		BASE64Decoder base64decoder = new BASE64Decoder();
		try {
			//将String变成byte
			byte[] bytes = (str);
			//获取解密对象
			Cipher cipher = (ALGORITHM);
			//初始化解密信息
			(Cipher.DECRYPT_MODE, key);
			//解密
			byte[] doFinal = (bytes);
			//返回解密信息
			return new String(doFinal, CHARSETNAME);
		} catch (Exception e) {
			// TODO: handle exception
			throw new RuntimeException(e);
		}
	}
	//测试
	public static void main(String[] args) {
		(getEncryptString("root"));
//		(getDecryptString("WnplV/ietfQ="));
	}
}