Question

Je travaille sur un projet où je dois utiliser une fonction de hachage pour faire une chaîne de hachage. Cette chaîne de hachage doit être unique se compose de 6 à 13 caractères (longueur fixe).

J'utilise une base de données pour stocker des données, donc pour chaque enregistrement, je possède un numéro unique. Je veux utiliser cet identifiant unique pour faire une chaîne de hachage (pour obtenir l'unicité de la chaîne de hachage résultat).

J'ai besoin cette chaîne de hachage ne comporte que des caractères valides (0-9 a-z A-Z).

Quelle fonction de hachage dois-je utiliser pour atteindre cet objectif? Comment puis-je générer de telles chaînes de hachage?

Ajouté plus tard: Je veux générer cette chaîne et le transmettre à l'utilisateur, afin qu'il puisse revenir plus tard pour modifier l'entrée. toute autre idée est acceptable.

Était-ce utile?

La solution

Utilisez la crypte:

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

L'identifiant unique est un sel de sorte que vous pouvez générer des valeurs différentes en fonction de l'identifiant. Donc, si un utilisateur a un mot de passe de « somevaluetohash » et un autre utilisateur avait le même, le hachage de fin ne serait pas le même.

Autres conseils

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

Utilisez hachage () pour d'autres algorithmes de hachage.

Mais quel besoin avez-vous ce hash pour? Pour moi, il ne fait pas beaucoup de sens pour générer un hachage de l'ID, ne pourriez-vous utiliser l'ID au lieu?

Est-il vraiment besoin d'être une somme de contrôle cryptographique? Ou est une somme de contrôle plus simple approprié? La base de données fournie clé primaire elle-même ne convient pas?

Vous avez beaucoup d'options, de la plus simple crc32 le plus avancé sha512 .

Mais si vous faites cela pour une application spécifique (par exemple système de fichiers hash, ou trouver les objets à proximité en utilisant certains paramètres), alors vous allez devoir spécifier plus de votre problème.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top