我一直在尝试使用 Cipher 类加密一段时间,但我仍然遇到问题。我在填充和字节数组大小方面遇到问题。我收到此异常“使用填充密码解密时输入长度必须是 8 的倍数”这是我编写的代码:
public CipherClass() {
try {
cipher = Cipher.getInstance(CIPHER_ALGO);
secKey = SecretKeyFactory.getInstance(CIPHER_ALGO).generateSecret(new DESedeKeySpec(new BigInteger(KEY, 16).toByteArray()));
}
catch(GeneralSecurityException e){
e.printStackTrace();
}
}
private String encrypt(String text){
try {
cipher.init(Cipher.ENCRYPT_MODE, secKey);
Base64 encoder = new Base64();
return new String(encoder.encode(cipher.doFinal(text.getBytes())));
}
catch(GeneralSecurityException e) {
e.printStackTrace();
}
return "";
}
private String decrypt(String text) {
try {
cipher.init(Cipher.DECRYPT_MODE, secKey);
Base64 decoder = new Base64();
return new String(decoder.decode(cipher.doFinal(text.getBytes())));
}
catch (Exception e) {
e.printStackTrace();
}
return "";
}
我也尝试使用 Hex 而不是 Base64,我收到了这个异常:“鉴于最终块没有正确填充”
请帮帮我,找出错误。提前致谢。