Differenza tra codifica e decodifica

Donna che ascolta la musica su un telefono cellulare

I file musicali sono comunemente codificati utilizzando il codec MP3.

Credito immagine: Purestock/Purestock/Getty Images

La codifica è il processo di traduzione dei dati tra due formati secondo un insieme di regole o una formula. Ad esempio, puoi codificare "abc" in "ABC" utilizzando le regole da minuscolo a maiuscolo. La decodifica è il processo inverso. Puoi decodificare "ABC" in "abc" usando lo stesso insieme di regole. Esistono molte applicazioni diverse per la codifica e la decodifica dei dati. La crittografia, ad esempio, è una forma di codifica che utilizza una chiave. Senza la chiave, i dati codificati non possono essere decodificati. I dati video vengono codificati per ridurli in modo che i flussi video ad alta definizione possano essere visualizzati su Internet.

La codifica viene comunemente utilizzata per ridurre le dimensioni dei dati audio e video. Un programma codificatore-decodificatore, chiamato codec, applica una serie di algoritmi matematici che eliminano i dati ridondanti. Ad esempio, supponiamo che un file contenga i dati "ABCDQABC". L'algoritmo del codec #1 potrebbe essere quello di sostituire "ABC" con "Z." Il file risultante sarebbe "ZDQZ", che è il 50 percento più piccolo dell'originale file. L'algoritmo del codec n. 2 potrebbe sostituire "ABC?" con "Y" e "?ABC" con "X", dove "?" indica qualsiasi carattere. Il file risultante sarà "YX", che è il 75% più piccolo del file originale.

Video del giorno

La decodifica utilizza lo stesso codec per ricostruire il file originale da un file codificato. Ad esempio, applicando il Codec n. 1 a "ZDQZ" al contrario si sostituisce "Z" con "ABC" per creare il file originale "ABCDQABC". Il codec n. 1, che era più piccolo del 50%, è chiamato codec senza perdita di dati perché la decodifica ricrea sempre l'originale file. Il codec n. 2 decodifica "YX" con "ABC?? ABC", e poi cerca di indovinare quali sono i caratteri mancanti. Il codec potrebbe indovinare "DE", che risulta in "ABCDEABC". Il codec n. 2, che era il 75% più piccolo, è un codec con perdita, perché il processo di decodifica potrebbe creare un file vicino all'originale, ma non identico.

URL e set di caratteri

Non tutte le codifiche producono un risultato più piccolo dei dati non codificati. Ad esempio, l'URL "example.com/Secret of Life.html" non è valido perché contiene spazi. Un programmatore Web codifica l'URL, che sostituisce tutti gli spazi con "%20" per creare "esempio.com/Secret%20of%20Life.html." Il processo di decodifica esegue l'operazione inversa e sostituisce "%20" con uno spazio. Allo stesso modo, un programma di database potrebbe codificare tutti i dati in Unicode, un insieme principale di caratteri nella maggior parte delle lingue. Quando un utente recupera i dati, il programma decodifica l'Unicode in modo che corrisponda alla lingua dell'utente e alle impostazioni della tastiera.

Codifica che non può essere decodificata

Alcune codifiche non sono progettate per essere decodificate. Un hash è una lunga stringa di caratteri casuali utilizzata con un algoritmo di codifica per produrre un risultato crittografato che non può essere decodificato, anche quando si conosce l'hash. Ad esempio, la password di un utente potrebbe essere crittografata con un hash e archiviata in un database. Se un hacker trova il database, non può decodificare alcuna password. Quando un utente effettua il login, il sistema codifica la password che l'utente inserisce con l'hash e confronta il risultato con quello memorizzato nel database. Se un utente dimentica la sua password, deve cambiarla, perché il sistema non conosce la sua password originale, ma solo il suo valore crittografato.