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