base64加密的解密
知識
06-16
[java] view plain copy
package
com.sms.utils;import
java.util.HashMap;import
java.util.Map;import
javax.crypto.Cipher;
import
javax.crypto.spec.IvParameterSpec;import
javax.crypto.spec.SecretKeySpec;import
org.apache.commons.codec.binary.Base64;import
org.apache.commons.lang3.StringUtils;import
com.alibaba.fastjson.JSONObject;public
class
AESUtils {public
static
String key = "123456!@#";public
static
String iv = "1234567812345678";- /**
- * 加密
- *
- * @param data
- * @return
- */
public
static
String encrypt(String data)throws
Exception {- Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
int
blockSize = cipher.getBlockSize();byte
[] dataBytes = data.getBytes();int
plaintextLength = dataBytes.length;if
(plaintextLength % blockSize != 0) {- plaintextLength = plaintextLength + (blockSize - (plaintextLength % blockSize));
- }
byte
[] plaintext =new
byte
[plaintextLength];- System.arraycopy(dataBytes, 0, plaintext, 0, dataBytes.length);
- SecretKeySpec keyspec =
new
SecretKeySpec(key.getBytes(), "AES"); - IvParameterSpec ivspec =
new
IvParameterSpec(iv.getBytes()); - cipher.init(Cipher.ENCRYPT_MODE, keyspec, ivspec);
byte
[] encrypted = cipher.doFinal(plaintext);return
Base64.encodeBase64String(encrypted);- }
- /**
- * 解密
- *
- * @param data
- * @return
- */
public
static
String desEncrypt(String data)throws
Exception {- //base64加密串在http中會把"+"號變為" "
- data = StringUtils.replace(data, " ", "+");
- // byte[] contentBytes = Base64.decode(data, 0);
byte
[] contentBytes = Base64.decodeBase64(data);- Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding");
- SecretKeySpec keyspec =
new
SecretKeySpec(key.getBytes(), "AES");
- IvParameterSpec ivspec =
new
IvParameterSpec(iv.getBytes()); - cipher.init(Cipher.DECRYPT_MODE, keyspec, ivspec);
byte
[] original = cipher.doFinal(contentBytes);- String originalString =
new
String(original); return
originalString;- }
public
static
void
main(String[] args)throws
Exception {- Map<String, String> map =
new
HashMap<String, String>(); - // map.put("username", "admin");
- // map.put("password", "123456");
- System.out.println(AESUtils.encrypt(JSONUtil.toJson(map)));
- }
- }
※一套返利網程序源碼
※使用RedisTemplate(JDK序列化策略)緩存實體類
TAG:程序員小新人學習 |