62,612
社区成员
发帖
与我相关
我的任务
分享
@Override
public boolean init() {
// 密钥生成器
try {
kenGenerator = KeyGenerator.getInstance(algorithm);
// 初始化密钥生成器 生成128位密钥,第二个参数是随机数
kenGenerator.init(128);
// 生成密钥
SecretKey secretKey = kenGenerator.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
secretKeySpec = new SecretKeySpec(enCodeFormat, algorithm);
// 生成密码器
cipher = Cipher.getInstance(algorithm);
return true;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
@Override
public boolean init(String key) {
try {
kenGenerator = KeyGenerator.getInstance(algorithm);
// 初始化密钥生成器 生成128位密钥,第二个参数是随机数
kenGenerator.init(128, new SecureRandom(key.getBytes("UTF-8")));
// 生成密钥
SecretKey secretKey = kenGenerator.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
secretKeySpec = new SecretKeySpec(enCodeFormat, algorithm);
// 生成密码器
cipher = Cipher.getInstance(algorithm);
return true;
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
/**
* 切换模式
*
* @param encryptOrDecrypt
* @return
*/
public synchronized Cipher switchED(int encryptOrDecrypt) {
Cipher cipher = null;
if (multiThreadMode) {
cipher = getCipher();
} else {
cipher = this.cipher;
}
if (cipher == null) {
throw new RuntimeException("Error: cipher is null ...");
}
try {
if (encryptOrDecrypt == Cipher.ENCRYPT_MODE) {
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
} else {
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
}
// 初始化加密块大小
blockSize = cipher.getBlockSize() * cryptFactor;
return cipher;
} catch (InvalidKeyException e) {
e.printStackTrace();
}
return null;
}