des加密去掉特殊字符
时间: 2023-09-09 14:09:13 浏览: 132
Base64整合DES加解密支持密钥支持解密失败返回统一字符支持加密后去除特殊字符
在DES加密后,会得到一串二进制数据,这些数据中可能会包含一些特殊字符,如`\0`、`\r`、`\n`等。如果需要将加密后的数据用于网络传输或存储到文件中,需要将这些特殊字符去掉。一种常见的方法是将加密后的数据进行Base64编码,这样得到的字符串中就不会包含特殊字符了。
以下是Java实现DES加密并去掉特殊字符的代码:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;
public class DESUtil {
private static final String ALGORITHM = "DES";
public static String encrypt(String content, String key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal(content.getBytes());
return Base64.getEncoder().encodeToString(encrypted).replaceAll("[\\s*\t\n\r]", "");
}
public static String decrypt(String content, String key) throws Exception {
SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), ALGORITHM);
Cipher cipher = Cipher.getInstance(ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decoded = Base64.getDecoder().decode(content);
byte[] decrypted = cipher.doFinal(decoded);
return new String(decrypted);
}
}
```
在上面的代码中,`encrypt`方法用于加密数据,`decrypt`方法用于解密数据。其中,`key`参数为密钥,`content`参数为待加密或解密的数据。加密后的数据通过Base64编码转换成字符串进行返回,并使用正则表达式`replaceAll`方法将特殊字符去掉,解密时需要先将字符串进行Base64解码,然后再进行解密操作。
阅读全文