des加密去掉特殊字符
时间: 2023-09-09 12:09:13 浏览: 134
在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解码,然后再进行解密操作。
阅读全文