Điều đó không hoàn toàn chính xác. AES mã hóa/giải mã dữ liệu theo khối (khối 128 bit, cụ thể). Ngoài ra, trong chế độ CBC, việc mã hóa/giải mã khối (i + 1) phụ thuộc vào khối (i) thứ. Vì vậy, nếu byte ngẫu nhiên nằm trong khối thứ i (giả sử đơn giản là byte không vượt qua giữa hai khối), khi bạn đi để giải mã khối thứ i, nó sẽ cho bạn giải mã sai (ví dụ: khối 128 bit sẽ không chính xác). Ngoài ra, vì khối tiếp theo được mã hóa bằng khối thứ i, khối thứ i (i + 1) cũng sẽ giải mã không chính xác (128 bit khác còn gọi là 16 byte). Từ đó, các khối tiếp theo sẽ chính xác (như tất cả các khối trước đó).
Để biết thêm thông tin, tôi đã đọc khoảng Modes of Encryption trên wikipedia.
Một điều nữa: thay đổi byte ngẫu nhiên có khả năng sẽ không ngăn việc giải mã xảy ra - nó sẽ không tạo ra bản gốc thô (dĩ nhiên).
Hy vọng điều đó sẽ hữu ích!
AFAIK, thường sẽ vẫn giải mã, nhưng sẽ cung cấp cho bạn một bản rõ khác. – SLaks
nếu padding được sử dụng và khối cuối cùng là giải mã cho một văn bản thuần khác nhau, sau đó việc thực hiện ** có thể ** báo cáo lại một lỗi. Ví dụ: Java, bạn sẽ nhận được một BadPaddingException nếu văn bản thuần túy không thể được bỏ độn. –
@owlstead: Có; đó là lý do tại sao tôi nói _usually_. – SLaks