public class AES
extends java.lang.Object
示例:
// AES d = new AES("AES/CFB");
AES d = new AES("12345678");
System.out.println(d.encrypt("abc"));
System.out.println(d.decrypt(d.encrypt("abc")));
System.out.println(d.encryptToBase64("abc"));
System.out.println(d.decryptString(d.encryptToBase64("abc")));
d.encrypt(new FileInputStream("/dev/shm/ramdisk/plain.xls"), new FileOutputStream("/dev/shm/ramdisk/enc"))
d.decrypt(new FileInputStream("/dev/shm/ramdisk/enc"), new FileOutputStream("/dev/shm/ramdisk/dec.xls"))
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
ALGORITHM |
static java.lang.String |
BASE64_TYPE_MINE |
static java.lang.String |
BASE64_TYPE_URLSAFE |
static java.nio.charset.Charset |
CHARSET |
static java.lang.String |
CIPHER_CBC_ISO10126PADDING |
static java.lang.String |
CIPHER_CBC_PKCS5PADDING |
static java.lang.String |
CIPHER_CBC_PKCS7PADDING |
static java.lang.String |
CIPHER_CFB_ISO10126PADDING |
static java.lang.String |
CIPHER_CFB_NOPADDING |
static java.lang.String |
CIPHER_CFB_PKCS5PADDING |
static java.lang.String |
CIPHER_CFB_PKCS7PADDING |
static java.lang.String |
CIPHER_ECB_ISO10126PADDING |
static java.lang.String |
CIPHER_ECB_PKCS5PADDING |
static java.lang.String |
CIPHER_ECB_PKCS7PADDING |
static java.lang.String |
CIPHER_OFB_ISO10126PADDING |
static java.lang.String |
CIPHER_OFB_NOPADDING |
static java.lang.String |
CIPHER_OFB_PKCS5PADDING |
static java.lang.String |
CIPHER_OFB_PKCS7PADDING |
| Constructor and Description |
|---|
AES(java.lang.String key)
构造方法
|
AES(java.lang.String key,
java.lang.String method)
构造方法
|
| Modifier and Type | Method and Description |
|---|---|
byte[] |
decrypt(byte[] encryptedData)
数据解密
|
javax.crypto.CipherInputStream |
decrypt(java.io.InputStream encryptedIs)
数据解密
|
void |
decrypt(java.io.InputStream encryptedIs,
java.io.OutputStream decryptedOs)
数据解密
|
javax.crypto.CipherOutputStream |
decrypt(java.io.OutputStream decryptedOs)
数据解密
|
byte[] |
decrypt(java.lang.String encryptedStr)
对使用 Base64 编码过的数据解密
|
java.lang.String |
decryptString(byte[] encryptedData)
数据解密,并返回解密后的字符串
|
java.lang.String |
decryptString(java.lang.String encryptedStr)
对使用 Base64 编码过的数据解密,并返回解密后的字符串
|
byte[] |
encrypt(byte[] plainData)
数据加密
|
javax.crypto.CipherInputStream |
encrypt(java.io.InputStream plainIs)
数据加密
|
void |
encrypt(java.io.InputStream plainIs,
java.io.OutputStream encryptedOs)
数据加密
|
javax.crypto.CipherOutputStream |
encrypt(java.io.OutputStream encryptedOs)
数据加密
|
java.lang.String |
encryptToBase64(byte[] plainData)
数据加密并返回 Base64 编码后的字符串
|
java.lang.String |
encryptToBase64(java.lang.String plainStr)
对字符串加密,并返回 Base64 编码后的字符串
|
static void |
main(java.lang.String[] args) |
AES |
setBase64Type(java.lang.String type)
设置 Base64 的编解码器类型
|
AES |
setIv(byte[] iv)
设置向量(某些算法必需)
|
static boolean |
validateKey(java.lang.String key) |
public static final java.nio.charset.Charset CHARSET
public static final java.lang.String ALGORITHM
public static final java.lang.String CIPHER_CBC_PKCS5PADDING
public static final java.lang.String CIPHER_CBC_PKCS7PADDING
public static final java.lang.String CIPHER_CBC_ISO10126PADDING
public static final java.lang.String CIPHER_ECB_PKCS5PADDING
public static final java.lang.String CIPHER_ECB_PKCS7PADDING
public static final java.lang.String CIPHER_ECB_ISO10126PADDING
public static final java.lang.String CIPHER_OFB_NOPADDING
public static final java.lang.String CIPHER_OFB_PKCS5PADDING
public static final java.lang.String CIPHER_OFB_PKCS7PADDING
public static final java.lang.String CIPHER_OFB_ISO10126PADDING
public static final java.lang.String CIPHER_CFB_NOPADDING
public static final java.lang.String CIPHER_CFB_PKCS5PADDING
public static final java.lang.String CIPHER_CFB_PKCS7PADDING
public static final java.lang.String CIPHER_CFB_ISO10126PADDING
public static final java.lang.String BASE64_TYPE_URLSAFE
public static final java.lang.String BASE64_TYPE_MINE
public AES(java.lang.String key,
java.lang.String method)
key - 加解密的密钥,长度为 16、24、32 的字符串;但由于 jvm 的限制,可能只支持长度 16 的秘钥。method - 算法/模式/填充,默认为 AES/ECB/PKCS5Paddingpublic AES(java.lang.String key)
key - 加解密的密钥,长度为 16、24、32 的字符串;但由于 jvm 的限制,可能只支持长度 16 的秘钥。public static boolean validateKey(java.lang.String key)
throws java.security.InvalidKeyException
java.security.InvalidKeyExceptionpublic AES setIv(byte[] iv)
iv - 向量值,注意长度问题(通常 16 位),避免加解密时抛出 `Wrong IV length` 异常public void encrypt(java.io.InputStream plainIs,
java.io.OutputStream encryptedOs)
throws java.security.GeneralSecurityException,
java.io.IOException
plainIs - 需要加密的数据流,如 FileInputStreamencryptedOs - 解密的输出流,如 FileOutputStreamjava.security.GeneralSecurityException - .java.io.IOException - .public javax.crypto.CipherInputStream encrypt(java.io.InputStream plainIs)
throws java.security.GeneralSecurityException
plainIs - 需要加密的数据流,如 FileInputStreamjava.security.GeneralSecurityException - .public javax.crypto.CipherOutputStream encrypt(java.io.OutputStream encryptedOs)
throws java.security.GeneralSecurityException
encryptedOs - 需要加密输出流,如 FileOutputStreamjava.security.GeneralSecurityException - .public byte[] encrypt(byte[] plainData)
throws java.security.GeneralSecurityException
plainData - 需要加密的数据java.security.GeneralSecurityException - .public java.lang.String encryptToBase64(byte[] plainData)
throws java.security.GeneralSecurityException
plainData - 需要加密的数据java.security.GeneralSecurityException - .public java.lang.String encryptToBase64(java.lang.String plainStr)
throws java.security.GeneralSecurityException
plainStr - 需要加密的字符串java.security.GeneralSecurityException - .public void decrypt(java.io.InputStream encryptedIs,
java.io.OutputStream decryptedOs)
throws java.security.GeneralSecurityException,
java.io.IOException
encryptedIs - 加密的数据输入流,如 FileInputStreamdecryptedOs - 解密的数据输出流,如 FileOutputStreamjava.security.GeneralSecurityException - .java.io.IOException - .public javax.crypto.CipherOutputStream decrypt(java.io.OutputStream decryptedOs)
throws java.security.GeneralSecurityException
decryptedOs - 希望解密的数据输出流java.security.GeneralSecurityException - .public javax.crypto.CipherInputStream decrypt(java.io.InputStream encryptedIs)
throws java.security.GeneralSecurityException
encryptedIs - 加密的数据输入流java.security.GeneralSecurityException - .public byte[] decrypt(byte[] encryptedData)
throws java.security.GeneralSecurityException
encryptedData - 加密的数据java.security.GeneralSecurityException - .public byte[] decrypt(java.lang.String encryptedStr)
throws java.security.GeneralSecurityException
encryptedStr - 加密的数据java.security.GeneralSecurityException - .public java.lang.String decryptString(byte[] encryptedData)
throws java.security.GeneralSecurityException
encryptedData - 加密数据java.security.GeneralSecurityException - .public java.lang.String decryptString(java.lang.String encryptedStr)
throws java.security.GeneralSecurityException
encryptedStr - 加密的字符串java.security.GeneralSecurityException - .public AES setBase64Type(java.lang.String type)
type - 可选 BASE64_TYPE_URLSAFE、BASE64_TYPE_MINE、其他(默认)public static void main(java.lang.String[] args)
throws java.lang.Exception
java.lang.Exception