package
test;
import
java.security.GeneralSecurityException;
import
java.security.Key;
import
javax.crypto.Cipher;
import
javax.crypto.KeyGenerator;
import
javax.crypto.SecretKey;
import
javax.crypto.spec.SecretKeySpec;
public
class
AESCoder {
public
static
final
String
KEY_ALGORITHM
=
"AES"
;
public
static
final
String
CIPHER_ALGORITHM
=
"AES/EBC/PKCS5Padding"
;
//密钥算法
private
static
Key toKey(
byte
[] key){
SecretKey secretkey =
new
SecretKeySpec(key,
KEY_ALGORITHM
);
return
secretkey;
}
public
static
byte
[] decrypt(
byte
[] data,
byte
[] key)
throws
Exception, GeneralSecurityException{
Key k= toKey(key);
Cipher cipher=Cipher. getInstance(
CIPHER_ALGORITHM
);
cipher.init(Cipher.
DECRYPT_MODE
, k);
return
cipher.doFinal(data);
}
public
static
byte
[] encrytp(
byte
[] data,
byte
[] key)
throws
Exception, GeneralSecurityException{
Key k= toKey(key);
Cipher cipher=Cipher. getInstance(
CIPHER_ALGORITHM
);
cipher.init(Cipher.
ENCRYPT_MODE
, k);
return
cipher.doFinal(data);
}
public
static
byte
[] initKey()
throws
Exception{
KeyGenerator kg=KeyGenerator. getInstance(
KEY_ALGORITHM
);
kg.init(256);
SecretKey secretKey=kg.generateKey();
//获取密钥的二进制编码形式
return
secretKey.getEncoded();
}
}
对密钥规范的要求降低了,无需实现密钥规范类。