2011-06-20 2 views
3

La fonction "shm_get" de PHP requiert une clé de sémaphore entière, que je réalise être une restriction du système d'exploitation sous-jacent. J'utilise la fonction "sha1" pour hacher une entrée utilisateur et utiliser le hachage pour identifier de manière unique un certain nombre de fichiers et de processus d'arrière-plan.Alphanumérique (sha1) Semaphore en PHP?

Existe-t-il un moyen de convaincre shm_get d'accepter une clé alphanumérique ou de convertir un hachage sha1 en nombre entier acceptable?

Répondre

2

Vous pouvez convertir un nombre hexadécimal en nombre décimal en utilisant hexdec()

Toutefois, si vous avez un grand nombre dans votre hachage, ce ne sera pas retourner un entier. Mais vous avez besoin d'un entier. Donc, vous pourriez vouloir le couper et n'utiliser qu'une partie du hachage.

$hash = sha1('http://www.hashcat.net/'); 
$hash = substr($hash, 0, 15); // ok on 64bit systems 
$number = (int) hexdec($hash); // cap to PHP_INT_MAX anyway 
var_dump($hash, $number); 
+0

Il est impossible de stocker ce nombre dans un nombre entier. –

+0

Ouais question était déjà en édition, c'est changé;) – hakre

+1

hexdec ne garantit pas un retour d'entier. Cela semble être un problème. – Richard