Tôi đang cố gắng mã hóa/giải mã một chuỗi trong Java. Không có vấn đề liên quan đến việc mã hóa sau đó được lưu trữ trong một bảng sqlite. Nhưng tôi luôn luôn nhận được lỗi tương tự cố gắng để giải mã nó:Lỗi giải mã trong java
"java.security.InvalidKeyException: không có bộ IV khi ai ngờ"
Dưới đây là đoạn mã của tôi:
public String encrypt(String password){
try
{
String key = "mysecretpassword";
SecretKeySpec keySpec = null;
keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
return new String(cipher.doFinal(password.getBytes()));
}
catch (Exception e)
{
return null;
}
}
public String decrypt(String password){
try
{
String key = "mysecretpassword";
SecretKeySpec keySpec = null;
keySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.DECRYPT_MODE,keySpec);
return new String(cipher.doFinal(password.getBytes()));
}
catch (Exception e)
{
System.out.println(e);
return null;
}
}
Tôi gì làm sai?
Có cùng một vấn đề, không hiểu, tại sao nó hoạt động trên mã hóa và không thành công khi giải mã? trừ khi không thiết lập IV trong mã hóa một mã ngẫu nhiên được tạo ra? – scottyab
Chỉ cần theo dõi nhận xét trước của tôi. Có, bạn cần phải thiết lập một IV tương tự như cách @Udo đã hiển thị dưới đây. – scottyab
Có thể trùng lặp với [Lỗi giải mã: "không có bộ iv khi được mong đợi"] (http://stackoverflow.com/questions/11503157/decrypting-error-no-iv-set-when-one-expected) – rds