Raramente usi codifica per l'integrità 1 . La codifica viene utilizzata per trasformare alcuni dati in un altro formato, in genere perché è più adatto all'altro sistema. Ad esempio, base64 viene utilizzato perché alcuni sistemi potrebbero non reagire molto bene ad alcuni dati binari. La codifica potrebbe aiutarti solo contro errori di trasmissione . (Ad esempio, se i dati base64 ricevuti contengono un carattere non valido, si sa che qualcosa è andato storto.)
Funzioni hash possibile essere utilizzato per l'integrità per garantire che i dati non siano stati manomessi da un utente malintenzionato . codice di autenticazione dei messaggi con chiave cancellata (HMAC) usa una funzione di hash, insieme a un tasto (conosciuto dal mittente e dal destinatario) per garantire che i dati siano stati inviati dalla persona giusta, eseguendo così l'autenticazione.
Come puoi vedere, la codifica offre semplicemente l'integrità e non ti protegge da un utente malintenzionato. Le funzioni di hash, se utilizzate correttamente, possono proteggere l'integrità dei dati trasmessi sia dagli errori di trasmissione che dagli aggressori.
Nel caso di fornire un nome utente e una password a un sito web, autenticazione di base codificherà il tuo nome utente e password con base64. Questo non fornisce alcuna sicurezza, perché chiunque può decrittografarlo. Ad esempio, possiamo facilmente recuperare il nome utente / password utilizzati nella pagina di Wikipedia sull'autenticazione di base:
# Encoding the username and password
$ echo -n "Aladdin:OpenSesame" | base64
QWxhZGRpbjpPcGVuU2VzYW1l
# Retrieving the encoded username and password
$ echo -n "QWxhZGRpbjpPcGVuU2VzYW1l" | base64 -D
Aladdin:OpenSesame
Il nome utente / password non sono codificati per ragioni di sicurezza, ma per sfuggire al carattere speciale.
1 Vedi rilevamento degli errori e correzione (Wikipedia)