java实现des加解密算法
时间: 2023-05-25 09:07:10 浏览: 204
Java实现DES加解密算法解析
5星 · 资源好评率100%
DES加解密算法是一种对称加密算法,可以实现数据的加密和解密。Java中可以使用javax.crypto库来实现DES加解密算法。
以下是一个简单的示例代码:
```java
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class DesEncryption {
private static final String DES_ALGORITHM = "DES";
public static void main(String[] args) throws Exception {
String plainText = "Hello World!";
String key = "12345678";
System.out.println("明文:" + plainText);
byte[] encrypted = encrypt(plainText.getBytes(), key.getBytes());
System.out.println("加密后的密文:" + new String(encrypted));
byte[] decrypted = decrypt(encrypted, key.getBytes());
System.out.println("解密后的明文:" + new String(decrypted));
}
public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES_ALGORITHM);
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance(DES_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(data);
}
public static byte[] decrypt(byte[] data, byte[] key) throws Exception {
DESKeySpec desKeySpec = new DESKeySpec(key);
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES_ALGORITHM);
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
Cipher cipher = Cipher.getInstance(DES_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return cipher.doFinal(data);
}
}
```
在示例代码中,首先定义了一个DES_ALGORITHM常量,用于指定加密算法。然后,定义了encrypt()和decrypt()方法,分别用于加密和解密操作。
在encrypt()方法中,通过DESKeySpec构造方法传入key字节数组,然后通过SecretKeyFactory生成SecretKey对象。接着,通过Cipher类的getInstance()方法获取Cipher实例,并使用init()方法初始化为加密模式。最后,使用doFinal()方法进行加密操作。
在decrypt()方法中,与encrypt()方法类似,只是将Cipher初始化为解密模式。
最后,在main()方法中,定义了需要加密的字符串和加密密钥,并分别调用encrypt()和decrypt()方法进行加密和解密操作。
阅读全文