Chỉ cần lưu ý nhanh về CBC so với ECB. Khi bạn mã hóa bằng ECB, mỗi 128 bit (tùy thuộc vào kích thước khối) của dữ liệu được mã hóa bằng cùng một khóa. Nếu có bất kỳ mẫu nào trong bản rõ, văn bản được mã hóa kết quả cũng sẽ có thể dự đoán được, cho dù thuật toán mã hóa có tốt hay không.
ECB:
Plain text: aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa aaaaaaaaaaaaaaaa
---------------- ---------------- ----------------
Encrypted: bdefjakjapqeiowp bdefjakjapqeiowp bdefjakjapqeiowp
Nếu bạn sử dụng CBC, khối đầu tiên được XOR với bản IV (vector khởi tạo) và được mã hóa với khóa và khối thứ hai được XOR với khối đầu tiên và sau đó được mã hóa bằng khóa, thứ ba với khóa. Mật mã kết quả sau đó ít bị tổn thương hơn khi phân tích tần số.
This image is taken from Wikimedia Commons, the free media repository
Điểm bất lợi là bạn không thể parallelize mã hóa/giải mã kể từ khi bạn cần kết quả của khối trước đó, vì vậy nó có thể chậm hơn. Nhưng trong thực tế, nó không tạo ra sự khác biệt thực sự nào.
"aes-128" không chỉ định chế độ, nhưng mật mã "aes-128- *" làm. Không rõ chế độ "aes-128" nào mặc định, vì vậy bạn nên tìm ra điều đó trước. –