Incoerenza tra i protocolli di hash MD5, SHA1 e SHA256

0

Sembra che ci sia un'incoerenza (o protocollo non pubblicato) in molti generatori di hash online durante la formulazione di un hash da un file di testo caricato, rispetto al rigoroso hashing del contenuto di un file. Questo problema sembra non essere correlato al nome del file, ma può essere costantemente replicato.

Ad esempio, esegui l'hashing come segue (copia e incolla al link ) ...

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis
nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu
fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in
culpa qui officia deserunt mollit anim id est laborum.

... produce un hash MD5 di: A5E90C16BEB53BB93468496EAF2E0AC4.

Tuttavia, se si copia quanto sopra in un file di testo, quindi si carica il file, l'hash MD5 prodotto è: 8F18B10192372D8523558CF65DB2B1B2, indipendentemente dal nome del file.

Oltre al sito sopra, questo può essere riprodotto su "passwordsgenerator.net/md5-hash-generator/" (copia-incolla) e "md5file.com/calculator" (caricamento del file), ed è coerente tra MD5, SHA-1 e SHA-256.

Questo implica che ci siano caratteri invisibili che vengono costantemente sottoposti a hashing nel caricamento del file (indipendentemente dal nome del file) che stanno facendo casino con l'hash, oppure gli algoritmi stanno aggiungendo / sottraendo caratteri durante l'importazione del file (improbabile).

Perché questi hash sono diversi?

Sono su una macchina Windows, usando il blocco note di base per la creazione di file. Si prega di scusare i link "citazione" di cui sopra; Non mantengo una reputazione appropriata per più collegamenti in un post.

    
posta Miller 18.09.2017 - 00:02
fonte

2 risposte

4

A5E90C16BEB53BB93468496EAF2E0AC4 è l'hash MD5 di quel testo con terminazioni di linea in stile Unix (LF).

8F18B10192372D8523558CF65DB2B1B2 è l'hash MD5 di quel testo con terminazioni di linea in stile Windows (CRLF).

Dato che stai usando Blocco note su Windows, immagino che il primo sito converta le terminazioni di linea in stile Unix prima di eseguire l'hashing del testo.

    
risposta data 18.09.2017 - 00:38
fonte
0

Senza essere in grado di guardare il codice dietro il sito web, probabilmente sospetto che stia succedendo qualcosa di molto semplice.

Quando inserisci il testo nella casella di input, il codice backend lo tratta come una semplice stringa. Ogni linguaggio di programmazione ha la propria codifica come ASCII o UTF-8.

Nel file, lo stai salvando con una codifica, che il codice del sito web sembra prendere in considerazione. Puoi vederlo con Blocco note sotto Windows. Salva un documento come "ANSI", "Unicode", "Unicode big endian" e "UTF-8". Aprire ciascun documento in un editor esadecimale dopo averlo salvato. Noterai che alcuni hanno un "contrassegno di formattazione" per indicare quale tipo di codifica è usato.

Questo comportamento potrebbe essere intenzionale o potrebbe non esserlo. Qualcosa da tenere a mente.

    
risposta data 18.09.2017 - 00:26
fonte

Leggi altre domande sui tag