Tôi đang phát triển một dự án bằng php nơi cần mã hóa các tệp được người dùng tải lên. Tệp này có thể từ 1mb đến 200mb nhiều hơn hoặc ít hơn. Tìm kiếm trên web, tôi đi đến kết luận rằng cách tốt nhất để làm điều đó là chia các tệp theo các phần, ví dụ, 4096 byte. Vì vậy, tôi mã hóa từng đoạn và nối nó vào tệp được mã hóa đầy đủ. Tôi đang thực sự sử dụng mã hóa và mã hóa AES-256 trong chế độ CBC. Vì vậy, câu hỏi của tôi là: 1) Tôi phải tạo một vector ban đầu mới cho mỗi đoạn, hoặc tôi có thể nhận được 16byte cuối cùng của khối cuối cùng của đoạn trước đó làm vector ban đầu của khối đầu tiên của đoạn hiện tại? Điều này sẽ dẫn đến chỉ có một iv để gắn thêm vào đầu của tập tin được mã hóa, và không phải là một iv cho mỗi đoạn để nối thêm trước đoạn mã hóa.Cách tiếp cận tốt nhất để mã hóa các tệp lớn bằng php
2) Để thêm xác thực HMAC. Câu hỏi này được liên kết với câu hỏi trước. Tôi có nên thêm nó cho toàn bộ tập tin hoặc cá nhân cho mỗi đoạn. Trong trường hợp này, làm cho nó cho toàn bộ tập tin là một vấn đề vì nó thường được thêm vào lúc bắt đầu của tập tin, và tôi không thể tính toán hmac cho đến khi tập tin được mã hóa hoàn tất.
3) Liên quan đến điều này. Để tải xuống tệp, bạn nên giải mã (theo khối) và gửi tệp cho người dùng cùng lúc hoặc tốt hơn là giải mã trước và gửi sau?
Cảm ơn
Tại sao lại phát minh bánh xe? Tại sao không sử dụng một giải pháp đã tồn tại? –
Nó sẽ là tuyệt vời nhưng tôi không thể tìm thấy một giải pháp cho việc này. Bạn có ý tưởng nào không? Cảm ơn! –
Tại sao mã hóa theo khối? Bạn không cần phải cung cấp tệp đầy đủ trong một cuộc gọi để mã hóa nó dưới dạng một tệp. –