Sto sviluppando un progetto in php in cui è necessario crittografare i file caricati dagli utenti. Questi file potrebbero essere da 1mb a 200mb più o meno. Cercando sul web, sono giunto alla conclusione che il modo migliore per farlo era dividere i file in blocchi di, ad esempio, 4096 byte. Quindi crittaggio ogni pezzo e lo aggiungo al file crittografato completo. In realtà sto usando la crittografia mcrypt e AES-256 in modalità CBC.Miglior approccio per crittografare i file di grandi dimensioni con php
Quindi, le mie domande sono: 1) devo creare un nuovo vettore iniziale per ogni pezzo, o posso ottenere gli ultimi 16bytes dell'ultimo blocco di un pezzo precedente come vettore iniziale del primo blocco del pezzo attuale? Ciò si tradurrà nell'avere un iv iv da aggiungere all'inizio del file crittografato, e non un iv per ogni chunk da aggiungere prima del chunk encrpyted.
2) Per aggiungere un'autenticazione HMAC. Questa domanda è collegata alla precedente. Dovrei aggiungerlo per l'intero file o singolarmente per ogni blocco. In questo caso, eseguirlo per l'intero file è un problema poiché viene solitamente aggiunto all'inizio del file e non è possibile calcolare l'hmac fino a quando il file crittografato non è completo.
3) Relativo a questo. Per il download dei file, è consigliabile decodificare (in blocchi) e inviare file all'utente contemporaneamente o è meglio decifrare prima e inviare successivamente?
Grazie
Perché reinventare la ruota? Perché non utilizzare una soluzione già esistente? –
Sarebbe bello ma non riesco a trovare una soluzione per questo. Ne hai idea? Grazie! –
Perché crittografare in blocchi? Non è necessario fornire il file completo in una chiamata per crittografarlo come un unico file. –