des加密去掉特殊字符%
时间: 2023-09-09 20:09:13 浏览: 174
python如何实现DES加密
如果加密后的数据中包含特殊字符`%`,则需要将其转义为`%25`,否则可能会被误解析。以下是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%]", "").replaceAll("%", "%25");
}
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.replaceAll("%25", "%"));
byte[] decrypted = cipher.doFinal(decoded);
return new String(decrypted);
}
}
```
在上面的代码中,`encrypt`方法用于加密数据,`decrypt`方法用于解密数据。其中,`key`参数为密钥,`content`参数为待加密或解密的数据。加密后的数据通过Base64编码转换成字符串进行返回,并使用正则表达式`replaceAll`方法将特殊字符去掉,同时将`%`转义为`%25`,解密时需要先将字符串进行Base64解码,然后再进行解密操作,并将`%25`转义回`%`。
阅读全文