# Stranezze con MD5

## geps2

Guardate cosa ottengo se faccio un hash MD5 sul mio server:

```

# echo "ciao" | md5sum

5f423b7772a80f77438407c8b78ff305

```

Mentre l'hash corretto di "ciao" dovrebbe essere questo: 6e6bc4e49dd477ebc98ef4046c067b5f (provato con un generatore on line e un altro tool)

La cosa non mi piace molto...

Che ne pensate?

Grazie per l'attenzione, ciao!

GePs[/code]

----------

## .:chrome:.

 *geps2 wrote:*   

> Guardate cosa ottengo se faccio un hash MD5 sul mio server:
> 
> ```
> # echo "ciao" | md5sum
> 
> ...

 

chi l'ha detto che l'hash dovrebbe essere quello? da un punto di vista matematico le funzioni di hash appartengono all'insieme delle funzioni non iniettive. ciò vuol dire che ad ogni elemento di "input" possono essere associati, in modo non univoco, più elementi dell'"output".

nulla di strano. dipende da come viene implementato l'algoritmo e da come viene calcolato (ovvero: dipende dalla macchina che lo esegue)

----------

## Ic3M4n

@geps2: anche io ottengo quell'hash.

----------

## geps2

 *.:chrome:. wrote:*   

> 
> 
> chi l'ha detto che l'hash dovrebbe essere quello? da un punto di vista matematico le funzioni di hash appartengono all'insieme delle funzioni non iniettive. ciò vuol dire che ad ogni elemento di "input" possono essere associati, in modo non univoco, più elementi dell'"output".
> 
> nulla di strano. dipende da come viene implementato l'algoritmo e da come viene calcolato (ovvero: dipende dalla macchina che lo esegue)

 

Ok, siamo d'accordo, esistono le collisioni. Ma scusate, è ingenuo affermare che se il risultato di una funzione di hash dipende dalla macchina che lo esegue mi cade tutto il principio della firma digitale? Forse no, se gli algoritmi di verifica prevedono il confronto con più valori della stringa "hashata", ma comunque mi sembra molto strano tutto ciò... tanto più che ho provato l'md5sum di una macchina debian e mi ha dato lo stesso risultato del "cugino" sul server gentoo... quindi qui siamo OT, magari facciamo un follow up da qualche altra parte...

----------

## .:chrome:.

@geps2:

e chi ha parlato di collisioni? non ho assolutamente parlato di collisioni, quelle sono un discorso a parte.

ti invito a rileggere meglio quello che ti ho scritto e, se non hai capito qualcosa, a chiedere

----------

## Dun

 *geps2 wrote:*   

> Guardate cosa ottengo se faccio un hash MD5 sul mio server:
> 
> ```
> 
> # echo "ciao" | md5sum
> ...

 

Ingannava anche me le prime volte  :Smile: 

```

stefano@Ansia ~ $ echo -n "ciao" | md5sum

6e6bc4e49dd477ebc98ef4046c067b5f  -

stefano@Ansia ~ $

```

Da "man echo" infatti:

```

-n     do not output the trailing newline

```

----------

## lavish

Spostato da Forum italiano (Italian) a Forum di discussione italiano.

----------

## gutter

 *.:chrome:. wrote:*   

> 
> 
> chi l'ha detto che l'hash dovrebbe essere quello? da un punto di vista matematico le funzioni di hash appartengono all'insieme delle funzioni non iniettive. ciò vuol dire che ad ogni elemento di "input" possono essere associati, in modo non univoco, più elementi dell'"output".
> 
> 

 

 :Shocked: 

----------

## Kernel78

Non ho capito la spiegazione di .:chrome:.  :Confused: 

Il problema come ha fatto notare Dun è il newline che viene aggiunto di default da echo ...

creando due file uno con solo "ciao" e uno con "ciao" seguito da un newline e calcolando l'md5 di entrambi si può avere la controprova (casomai servisse).

----------

## geps2

 *Kernel78 wrote:*   

> Non ho capito la spiegazione di .:chrome:. 
> 
> Il problema come ha fatto notare Dun è il newline che viene aggiunto di default da echo ...
> 
> creando due file uno con solo "ciao" e uno con "ciao" seguito da un newline e calcolando l'md5 di entrambi si può avere la controprova (casomai servisse).

 

E' vero. Mi stavo già lambiccando il cervello sugli algoritmi di verifica...

Grazie!

----------

## masterbrian

Ciao ragazzi,

qualcuno ha mai notato che i risultati resituiti da md5sum sono diversi da quelli di qualsiasi md5 password generator disponibile su internet?

se vado su http://md5encryption.com/?mod=encrypt, e provo a generare l'md5 di "admin" (senza virgolette), ottengo:

21232f297a57a5a743894a0e4a801fc3

se invece faccio:

```
$ echo admin |md5sum

456b7016a916a4b178dd72b947c152b7  -
```

che e' completamente diverso.

Ho provato su internet a fare un giro per i vari md5 password generator, e il risultato e' sempre uguale a quello ottenuto sul primo sito, quindi sempre diverso da quello che ho sulla mia macchina con bash.

Se provo su macchine diverse sempre con gentoo ottengo lo stesso risultato che ho sulla mia.

A questo punto mi domando se il problema non sia md5sum....

Probabilmente lo uso male io, nessuno ha idea del perche' succeda questo o come fare per rimediare?

Grazie

----------

## randomaze

 *masterbrian wrote:*   

> Probabilmente lo uso male io, nessuno ha idea del perche' succeda questo o come fare per rimediare?

 

masterbrian, ho fatto il merge del tuo topic  :Wink: 

Come spiegato qualche post più sopra il problema é il newline, infatti:

```

$ printf "admin" | md5sum

21232f297a57a5a743894a0e4a801fc3  -

$ printf "admin\n" | md5sum

456b7016a916a4b178dd72b947c152b7  -

$ echo "admin" | md5sum

456b7016a916a4b178dd72b947c152b7  -

```

----------

## Kernel78

o per fare un esempio più sbrigativo

```
$ echo -n admin | md5sum

21232f297a57a5a743894a0e4a801fc3  -
```

----------

## masterbrian

 *randomaze wrote:*   

>  *masterbrian wrote:*   Probabilmente lo uso male io, nessuno ha idea del perche' succeda questo o come fare per rimediare? 
> 
> masterbrian, ho fatto il merge del tuo topic 
> 
> Come spiegato qualche post più sopra il problema é il newline, infatti:
> ...

 

Argh!! Ecco xke' ho trovato la mia risposta su un altro topic!!! )

----------

## masterbrian

Ingannava anche me le prime volte  :Smile: 

```

stefano@Ansia ~ $ echo -n "ciao" | md5sum

6e6bc4e49dd477ebc98ef4046c067b5f  -

stefano@Ansia ~ $

```

grandissimo, ecco il problema. Risolto, grazie infinite  :Smile: 

Da "man echo" infatti:

```

-n     do not output the trailing newline

```

[/quote]

----------

## drizztbsd

Sconsiglio di usare echo -n se si vuole la massima compatiblità, usate printf  :Razz: 

----------

## Kernel78

Diamine anche il vecchio SCO che abbiamo in ufficio supporta echo -n, l'unico sistema che ho trovato a non supportarlo è un'antica versione di AIX ...

Tanto sia sullo SCO che sull'Aix non è presente md5sum, quindi penso che echo -n sia il minore dei problemi  :Wink: 

----------

## drizztbsd

 *Kernel78 wrote:*   

> Diamine anche il vecchio SCO che abbiamo in ufficio supporta echo -n, l'unico sistema che ho trovato a non supportarlo è un'antica versione di AIX ...
> 
> Tanto sia sullo SCO che sull'Aix non è presente md5sum, quindi penso che echo -n sia il minore dei problemi 

 

Se è per questo manco (Gentoo/)FreeBSD ha md5sum  :Razz: 

----------

## stefanonafets

 *Kernel78 wrote:*   

> Diamine anche il vecchio SCO che abbiamo in ufficio supporta echo -n, l'unico sistema che ho trovato a non supportarlo è un'antica versione di AIX ... 

 

Se non mi ricordo male su HP-UX lo switch "-n" non è supportato...

Siccome non ne sono sicuro domani controllo (a che ci sono controllo anche su sun 8 e 10)

W POSIX !!!   :Very Happy: 

[edit]

Per SUN 10:

```

$> uname -a

SunOS $(hostname) 5.10 Generic_118833-24 sun4u sparc SUNW,Sun-Fire-15000

$> echo $0

ksh

$> echo -n ciao

-n ciao

$> /bin/echo -n ciao

-n ciao

$>  /usr/ucb/echo -n ciao

ciao$>

$> /usr/bin/bash

$> echo $0

bash

$> echo -n ciao

ciao$>

```

Per SUN 8 valgono le stesse considerazioni (potevo postare l'intera lista dei comandi, ma cambiava solo il risultato di uname)

Per HP-UX 11:

```

$> uname -a

HP-UX $(hostname) B.11.11 U 9000/800 479356370 unlimited-user license

$> echo $0

-ksh

$> echo -n ciao

-n ciao

$> /bin/echo -n ciao

-n ciao

```

Purtroppo non ho a disposizione versioni diverse di HP-UX e non ho a disposizione HP-UX con installata la bash.

[/edit]

----------

## cloc3

curiosità

perché l'md5 calcolato da php è diverso da quello che si ricava con bash?

```

# echo "apple"|md5sum

30c6677b833454ad2df762d3c98d2409  -

```

----------

## djinnZ

echo -n comporta lo stesso risultato? C'era qualcosa in tal proposito ma non è ora per ricordare (cerca meglio nel forum, con google, la ricerca pare che non funzioni di nuovo, se mai ha funzionato  :Evil or Very Mad:  )

----------

## cloc3

 *djinnZ wrote:*   

> echo -n comporta lo stesso risultato?
> 
> 

 

si, hai ragione. con il segno meno quagliano.

ma tu perché non hai provato? ti ho pescato su winzozz, forse?

----------

## djinnZ

[OT]

[bestemmia]mavaff******[bestemmia]! Ovvio che vivendo nella tua medesima repubblica delle banane (non so per quanto ma tant'è) sono obbligato ad usare certe [censura] di sistemi operativi a causa dei programmi [censura] che per legge del [turpiloquio idescrivibile ed illecito] sono obbligato ad usare.[maledizioni][bestemmione]

Tanto i [censura assoluta] sedicenti difensori delle libertà civili, di turno e non, sanno solo [censura] ottenere false vittorie o [censura] tirare acqua al loro mulino.

Quando ci vuole... ci vuole.  :Twisted Evil: [/OT]

echo aggiunge sempre un newline e quindi hai un carattere in più che ti sballa l'hash ma come ho finalmente [ribestemmia] scoperto grazie alle puntualizzazioni di scen alcuni programmi più datati con utf8 sono influenzati anche dalle impostationi della locale, con notevoli differenze a seconda delle versioni e delle distribuzioni.

md5sum è tra questi (anche se non ricordo dove sono i post relativi al problema).

nota: le parti censurate sono state espresse nelle seguenti lingue: italiano, dialetti vari del napoletano, tedesco, latino, inglese, spagnolo, sardo e francese.

----------

## Kernel78

Fatto un bel merge.

Fare sempre una bella ricerca prima di postare  :Wink: 

----------

## cloc3

 *Kernel78 wrote:*   

> Fatto un bel merge.
> 
> Fare sempre una bella ricerca prima di postare 

 

ottimamente.

però ci sarebbe anche questo, che forse sarebbe un intervento di maggiore sostanza.

 :Rolling Eyes: 

----------

## Kernel78

 *cloc3 wrote:*   

>  *Kernel78 wrote:*   Fatto un bel merge.
> 
> Fare sempre una bella ricerca prima di postare  
> 
> ottimamente.
> ...

 

se questa notte ho tempo provvedo, tu intanto non fare OT  :Very Happy: 

----------

