package com.gzq.codetreasury.encrypt;
import java.io.UnsupportedEncodingException;
import java.security.InvalidAlgorithmParameterException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.Cipher;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import com.gzq.codetreasury.utils.GLog;
import android.util.Base64;
/**
* http://www.cnblogs.com/whoislcj/p/5473030.html<br>
* <pre>
* 什么是aes加密?
* 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),在密码学中又称Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。
* </pre>
*/
public class EncryptUtil {
// 采用对称分组密码体制,密钥长度的最少支持为128、192、256
String key = "7854156156611111";
//初始化向量参数,AES 为16bytes. DES 为8bytes.
String initVector = "0000000000000000"; // 16 bytes IV
IvParameterSpec iv ;
SecretKeySpec skeySpec;
Cipher cipher;
private EncryptUtil() {
try {
iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
} catch (NoSuchPaddingException e) {
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
}
private static class HOLDER {
private static EncryptUtil instance = new EncryptUtil();
}
public static EncryptUtil getInstance() {
return HOLDER.instance;
}
public String encrypt(String value) {
try {
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, iv);
byte[] encrypted = cipher.doFinal(value.getBytes());
return Base64.encodeToString(encrypted, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public String decrypt(String encrypted) {
try {
cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
byte[] original = cipher.doFinal(Base64.decode(encrypted, Base64.DEFAULT));
return new String(original);
} catch (Exception ex) {
ex.printStackTrace();
}
return null;
}
}
王学岗CSDN aes加密
最新推荐文章于 2024-08-07 13:25:42 发布