用java实现64位密钥的DES的加密解密功能
时间: 2024-04-22 20:28:58 浏览: 72
用JAVA实现DES加密解密
5星 · 资源好评率100%
以下是Java实现DES加密解密的示例代码,其中包括了64位密钥的加密解密功能:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class DesUtil {
private static final String ALGORITHM = "DES";
private static final String TRANSFORMATION = "DES/ECB/PKCS5Padding";
/**
* 加密
*
* @param key 密钥,长度为8个字符
* @param data 待加密数据
* @return 加密后的数据,使用Base64编码
* @throws Exception
*/
public static String encrypt(String key, String data) throws Exception {
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encryptedData = cipher.doFinal(data.getBytes());
return Base64.getEncoder().encodeToString(encryptedData);
}
/**
* 解密
*
* @param key 密钥,长度为8个字符
* @param encryptedData 加密后的数据,使用Base64编码
* @return 解密后的数据
* @throws Exception
*/
public static String decrypt(String key, String encryptedData) throws Exception {
Cipher cipher = Cipher.getInstance(TRANSFORMATION);
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
return new String(decryptedData);
}
public static void main(String[] args) {
String key = "12345678"; // 密钥,长度为8个字符
String data = "Hello, world!"; // 待加密数据
try {
String encryptedData = encrypt(key, data);
System.out.println("加密后的数据:" + encryptedData);
String decryptedData = decrypt(key, encryptedData);
System.out.println("解密后的数据:" + decryptedData);
} catch (Exception e) {
e.printStackTrace();
}
}
}
```
需要注意的是,DES算法已经被认为不安全,因为其密钥长度过短。在实际应用中,可以使用更加安全的AES算法。
阅读全文