Java实现的DES加密算法详解
什么是DES加密算法
DES加密算法是一种对称密钥算法,全称为“Data Encryption Standard”,是美国IBM公司于1975年研制的一种对称密钥加密算法。DES算法的原理非常简单,就是将明文经过一系列置换和替换操作,最终被加密成密文。而解密过程就是将密文经过相应的操作,最终得到明文。
DES算法具有如下特点:
- 对称密钥:加密和解密都使用同一个密钥。
- 安全性:在计算机领域,安全性指的是对称密钥保密的安全性,也就是说,密钥不被泄露,加密数据就是安全的。但是目前DES算法已经被破解,为保障信息安全,一般使用更安全的AES加密算法。
Java实现DES加密算法
在Java中,DES加密算法的实现可以借助Java标准库中的javax.crypto包。具体实现步骤如下:
- 生成一个加密密钥
java
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
keyGenerator.init(new SecureRandom());//初始化随机数生成器
SecretKey secretKey = keyGenerator.generateKey();
byte[] key = secretKey.getEncoded();
- 创建Cipher对象,指定加密模式和密钥
java
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
- 加密操作
java
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
String encryptedText = new BASE64Encoder().encode(encryptedBytes);
System.out.println("加密后的数据:" + encryptedText);
完整Java代码示例:
import sun.misc.BASE64Encoder;
import javax.crypto.*;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.SecureRandom;
public class DESEncrypt {
//解密key
private static final String KEY = "12345678";
public static void main(String[] args) {
try {
String plainText = "Hello, world!";
//生成一个加密密钥
KeyGenerator keyGenerator = KeyGenerator.getInstance("DES");
keyGenerator.init(new SecureRandom());//初始化随机数生成器
SecretKey secretKey = keyGenerator.generateKey();
byte[] key = secretKey.getEncoded();
//创建Cipher对象,指定加密模式和密钥
Cipher cipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
//加密操作
byte[] encryptedBytes = cipher.doFinal(plainText.getBytes(StandardCharsets.UTF_8));
String encryptedText = new BASE64Encoder().encode(encryptedBytes);
System.out.println("加密后的数据:" + encryptedText);
//解密操作
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
String decryptedText = new String(decryptedBytes);
System.out.println("解密后的数据:" + decryptedText);
} catch (Exception e) {
e.printStackTrace();
}
}
}
示例说明
在上面的Java代码示例中,我们对字符串“Hello, world!”进行了加密和解密操作,输出结果如下:
加密后的数据:40xLtkhjXmQ1dPvUoBLJ6w==
解密后的数据:Hello, world!
可以看到,经过DES加密和解密操作之后,我们成功地得到了原来的明文。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现的DES加密算法详解 - Python技术站