To nie jest całkiem poprawne. AES szyfruje/odszyfrowuje dane w blokach (w szczególności blokach 128-bitowych). Dodatkowo, w trybie CBC, szyfrowanie/odszyfrowywanie (i + 1) th bloku zależy od bloku (i).
Tak więc, jeśli losowy bajt wpada w i-tym bloku (załóżmy dla uproszczenia, że bajt nie przechodzi przez dwa bloki), kiedy przejdziemy do odszyfrowania tego bloku, da on błędne odszyfrowanie (tj. blok 128 bitów będzie niepoprawny). Dodatkowo, ponieważ następny blok został zaszyfrowany przy użyciu i-tego bloku, blok (i + 1) th również zostanie odszyfrowany niepoprawnie (kolejne 128 bitów to 16 bajtów). Stamtąd kolejne bloki będą poprawne (podobnie jak wszystkie poprzednie bloki).
Aby uzyskać więcej informacji, przeczytałem o Modes of Encryption na wikipedia.
Jeszcze jedno: zmiana losowego bajtu najprawdopodobniej nie zapobiegnie odszyfrowaniu - po prostu nie przyniesie oryginalnego tekstu jawnego (oczywiście).
Nadzieję, że pomaga!
AFAIK, zwykle będzie nadal odszyfrowywać, ale da inny tekst w postaci zwykłego tekstu. – SLaks
jeśli padding jest używany, a ostatni blok jest odszyfrowywany do innego zwykłego tekstu, to implementacja ** może ** zgłosić błąd. Na przykład w Java otrzymasz wyjątek BadPaddingException, jeśli zwykły tekst nie może zostać usunięty. –
@owlstead: Tak; właśnie dlatego powiedziałem: – SLaks