Domanda

Sto lavorando su un progetto in cui ho bisogno di utilizzare alcune funzioni di hash per fare una stringa hash. Questa stringa hash deve essere univoco costituito da 6 a 13 caratteri (lunghezza fissa).

Io uso un database per memorizzare i dati, quindi per ogni record, ho un ID univoco. Voglio usare questo ID univoco per fare una stringa hash (per ottenere unicità della stringa di hash risultato).

Ho bisogno di questa stringa hash si compone di soli caratteri validi (0-9 a-z A-Z).

Quale funzione di hash dovrei usare per raggiungere questo obiettivo? Come faccio a generare tali stringhe di hash?

aggiunto in seguito: voglio generare questa stringa e passarla all'utente, in modo da poter tornare più tardi per modificare la voce. qualsiasi altra idea è accettabile.

È stato utile?

Soluzione

Usa cripta:

$hash = crypt("somevaluetohash", $uniqueid);

L'ID univoco è un sale in modo da poter generare valori diversi a seconda del id. Quindi, se un utente ha avuto una password di "somevaluetohash" e un altro utente aveva lo stesso, l'hash fine non sarebbe lo stesso.

Altri suggerimenti

<?php
  $id;
  $hash_full = md5($id); //hash('sha256', $id);
  $hash_cropped = substr($hash_full, 0, 6);
?>

hash () per altri algoritmi di hashing.

Ma che cosa avete bisogno di questo hash per? Per me, non ha molto senso per generare un hash da ID, non poteva basta utilizzare l'ID, invece?

E 'davvero bisogno di essere un checksum crittografico? O è un checksum più semplice adatto? È la chiave primaria del database fornito in sé non adatto?

Hai un sacco di opzioni, dalle più semplici CRC32 per più avanzato sha512 .

Ma se si sta facendo questo per alcune applicazioni specifiche (come filesystem hashing , o trovare vicino oggetti utilizzando alcune metriche), allora si' ri andando ad avere per specificare più del problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top