SHA256 non è una funzione di crittografia ma una funzione di hash . La differenza fondamentale è che mentre la crittografia è una funzione bidirezionale (data la chiave) l'hash è solo una funzione unidirezionale: dati alcuni dati è possibile calcolare l'hash, dato l'hash è difficile (e matematicamente impossibile) avere i dati indietro .
Ho detto che è matematicamente impossibile trovare i dati dall'hash perché tipicamente una funzione hash ha un piccolo codominio (ad esempio 256 bit per SHA256) ma un dominio grande (puoi cancellare qualsiasi stringa), quindi ci saranno collisioni: stringhe diverse con lo stesso hash.
Per questo motivo se la tua password è salvata in un modulo con hash, allora esistono password infinite (ma possono essere molto lunghe) che sbloccano il tuo account.
La buona notizia è che le collisioni sono rare quando usi le funzioni di hash crittografiche crittografiche , quindi il tuo account è ancora al sicuro.
Rispondendo alla prima parte della domanda, la verifica dei dati è semplice: se Alice invia a Bob un file con il checksum hash, Bob può facilmente calcolare l'hash del file che ha ricevuto e confrontarlo con l'hash ricevuto da Alice. Questo di solito è sufficiente per scoprire se c'è stato qualche errore durante la trasmissione (quindi il file è corrotto), ma non è sufficiente se la trasmissione è stata alterata da qualche malintenzionato che ha anche alterato l'hash. Quindi Alice e Bob hanno bisogno di un canale sicuro per trasmettere l'hash (ad esempio una pagina https con un certificato valido) o devono firmare l'hash in qualche modo.
Quindi passiamo alla risposta alla tua seconda domanda: Alice può firmare l'hash utilizzando la sua chiave privata prima di inviarla a Bob, in questo modo un utente malintenzionato non può manometterlo senza invalidare la firma.
Ora potresti chiederti perché Alice firma con la sua chiave RSA (o simile) solo l'hash e non tutti i messaggi, perché l'elaborazione di RSA è più lenta del calcolo di un hash (quindi deve fare la cosa lenta solo su piccola stringa: l'hash). Questo era vero soprattutto quando PGP è stato creato e i computer erano più lenti.