PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > comp.lang.php > Why all hash algorithm are hexadecimal in PHP?
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Why all hash algorithm are hexadecimal in PHP?

Réponse
 
LinkBack Outils de la discussion
Vieux 25/03/2008, 22h21   #1
macm
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Why all hash algorithm are hexadecimal in PHP?

Hi Folks

I tested

<?php
echo 'sha256=>' .hash('sha256', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'sha384=>' .hash('sha384', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'sha512=>' .hash('sha512', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'ripemd128=>' .hash('ripemd128', 'The quick brown fox jumped over
the lazy dog.') .'</br>';
echo 'ripemd160=>' .hash('ripemd160', 'The quick brown fox jumped over
the lazy dog.') .'</br>';
echo 'whirlpool=>' .hash('whirlpool', 'The quick brown fox jumped over
the lazy dog.') .'</br>';
echo 'tiger128,3=>' .hash('tiger128,3', 'The quick brown fox jumped
over the lazy dog.') .'</br>';
echo 'tiger160,3=>' .hash('tiger160,3', 'The quick brown fox jumped
over the lazy dog.') .'</br>';
echo 'tiger192,4=>' .hash('tiger192,4', 'The quick brown fox jumped
over the lazy dog.') .'</br>';
echo 'snefru=>' .hash('snefru', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'gost=>' .hash('gost', 'The quick brown fox jumped over the lazy
dog.') .'</br>';
echo 'adler32=>' .hash('adler32', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'crc32=>' .hash('crc32', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'crc32b=>' .hash('crc32b', 'The quick brown fox jumped over the
lazy dog.') .'</br>';
echo 'haval128,3=>' .hash('haval128,3', 'The quick brown fox jumped
over the lazy dog.') .'</br>';
echo 'haval256,5=>' .hash('haval256,5', 'The quick brown fox jumped
over the lazy dog.') .'</br>';
?>

As you can see all results are hexadecimal.

Youtube for example have http://youtube.com/watch?v=n5pkDB7zEeo

n5pkDB7zEeo inst hexadecimal so the comparison is simple.

md5 algorithm have 32^16 = 1,2e^24

youtube algorithm have 11^63 = 405e^63 (because is case sensitive so
combination is [0-9]+[a-Z] + "_" ) (Could have more caracteres!)

So with only 11 caracteres I can have much more combination and much
less collision.

So how can I create a hash algorithm like youtube? with 11 caracteres
[0-9]+[a-Z] + "_"

Some tips? How compile?

Cheers

Mario
  Réponse avec citation
Vieux 25/03/2008, 22h30   #2
larry@portcommodore.com
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Why all hash algorithm are hexadecimal in PHP?

More compact than using decimal and easier to type and/or read (if
needed) than broader full alpha numeric formats.
  Réponse avec citation
Vieux 25/03/2008, 23h34   #3
Jerry Stuckle
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Why all hash algorithm are hexadecimal in PHP?

macm wrote:
> Hi Folks
>
> I tested
>
> <?php
> echo 'sha256=>' .hash('sha256', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'sha384=>' .hash('sha384', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'sha512=>' .hash('sha512', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'ripemd128=>' .hash('ripemd128', 'The quick brown fox jumped over
> the lazy dog.') .'</br>';
> echo 'ripemd160=>' .hash('ripemd160', 'The quick brown fox jumped over
> the lazy dog.') .'</br>';
> echo 'whirlpool=>' .hash('whirlpool', 'The quick brown fox jumped over
> the lazy dog.') .'</br>';
> echo 'tiger128,3=>' .hash('tiger128,3', 'The quick brown fox jumped
> over the lazy dog.') .'</br>';
> echo 'tiger160,3=>' .hash('tiger160,3', 'The quick brown fox jumped
> over the lazy dog.') .'</br>';
> echo 'tiger192,4=>' .hash('tiger192,4', 'The quick brown fox jumped
> over the lazy dog.') .'</br>';
> echo 'snefru=>' .hash('snefru', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'gost=>' .hash('gost', 'The quick brown fox jumped over the lazy
> dog.') .'</br>';
> echo 'adler32=>' .hash('adler32', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'crc32=>' .hash('crc32', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'crc32b=>' .hash('crc32b', 'The quick brown fox jumped over the
> lazy dog.') .'</br>';
> echo 'haval128,3=>' .hash('haval128,3', 'The quick brown fox jumped
> over the lazy dog.') .'</br>';
> echo 'haval256,5=>' .hash('haval256,5', 'The quick brown fox jumped
> over the lazy dog.') .'</br>';
> ?>
>
> As you can see all results are hexadecimal.
>
> Youtube for example have http://youtube.com/watch?v=n5pkDB7zEeo
>
> n5pkDB7zEeo inst hexadecimal so the comparison is simple.
>
> md5 algorithm have 32^16 = 1,2e^24
>
> youtube algorithm have 11^63 = 405e^63 (because is case sensitive so
> combination is [0-9]+[a-Z] + "_" ) (Could have more caracteres!)
>
> So with only 11 caracteres I can have much more combination and much
> less collision.
>
> So how can I create a hash algorithm like youtube? with 11 caracteres
> [0-9]+[a-Z] + "_"
>
> Some tips? How compile?
>
> Cheers
>
> Mario
>


What do y0ou need more than that for? The chances of a collision with
md5 and the rest are VERY remote.

You're much more likely to have a duplicate in the 11 characters than
you will in any of the hashes.

--
==================
Remove the "x" from my email address
Jerry Stuckle
JDS Computer Training Corp.
jstucklex@attglobal.net
==================

  Réponse avec citation
Vieux 26/03/2008, 00h14   #4
Jeremy
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Why all hash algorithm are hexadecimal in PHP?

macm wrote:
> As you can see all results are hexadecimal.
>
> Youtube for example have http://youtube.com/watch?v=n5pkDB7zEeo
>
> n5pkDB7zEeo inst hexadecimal so the comparison is simple.
>
> md5 algorithm have 32^16 = 1,2e^24
>
> youtube algorithm have 11^63 = 405e^63 (because is case sensitive so
> combination is [0-9]+[a-Z] + "_" ) (Could have more caracteres!)
>
> So with only 11 caracteres I can have much more combination and much
> less collision.
>
> So how can I create a hash algorithm like youtube? with 11 caracteres
> [0-9]+[a-Z] + "_"
>
> Some tips? How compile?
>
> Cheers
>
> Mario


Your math is backwards. Youtube's scheme has 63^11 (not 11^63)
combinations, which is about 6.2e19 possibilities.

If you want shorter, url-safe identifiers, you could do something
similar with base64. For example, if you bump the identifier up to 12
characters (multiples of 4 are good for base64) you would get 9 bytes of
data = (2^8)^9 = 2^72 ~= 4.7e21 combinations. Just replace the '/' and
'+' characters from base64 with different, url-safe characters (because
'/' and '+' have meaning in a URI).

Jeremy
  Réponse avec citation
Vieux 26/03/2008, 06h35   #5
NC
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Why all hash algorithm are hexadecimal in PHP?

On Mar 25, 2:21 pm, macm <moura.ma...@gmail.com> wrote:
>
> how can I create a hash algorithm like youtube?


Why do you think it's a hash? It's probably a unique ID represented
as a 62-based number...

> Some tips? How compile?


If you are content with case-insensitive IDs (meaning 36-based
numbers) you can use base_convert():

http://php.net/base_convert

If you insist on higher base, you would have to write the conversion
routine yourself...

Cheers,
NC
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 07h20.


Édité par : vBulletin® version 3.7.3
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières ©2000-2008
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,14030 seconds with 13 queries