fonction de hachage unique?

Dans notre application, nous allons être remis images png avec un ~200 caractères tableau d'octets. Je veux enregistrer l'image avec un nom de fichier correspondant à ce bytearray, mais pas l'objet bytearray lui-même, car je ne veux pas 200 caractères des noms de fichiers. Donc, ce que je pensait que je voudrais économiser de l'objet bytearray dans la base de données, puis MD5 pour obtenir un nom de fichier court. Quand il est temps d'afficher une image en particulier, je lève les yeux de son bytearray, MD5, puis recherchez le fichier.

So far So good. Le problème est que, potentiellement, deux bytearrays pourrait hachage vers le bas pour le même MD5. Ensuite, un fichier permettrait de remplacer l'autre. Ou peuvent-ils? Je pense que mes questions sont

  • Pourrait-deux ~200 char bytearrays MD5 hash vers le bas à la même chaîne?
  • S'ils le pouvaient, est-il une fois-par-10-âges de l'univers sorte de deal ou quelque chose qui pourrait éventuellement se produire dans mon application?
  • Est-il un algorithme de hachage qui va produire une (dis) 32 chaine de caractères qui est garanti pour être unique?
  • Je ne comprends pas la nécessité de déterminer automatiquement le nom de fichier par certains arbitraire de calcul. Il suffit de créer quelques clés... de nom de fichier ou de quoi que ce soit et de les stocker sur le côté de la 200 char tableau d'octets et de l'utiliser comme nom de fichier. Prend le calcul de la composition et rend le code sous-jacent plus simple...
  • Merci de capitaliser de manière conventionnelle.
  • jsobo - la raison pour laquelle je veux utiliser un hachage (ou similaire) la fonction est que, dans beaucoup de cas, la source de bytearray (et png) sera la même pour les différents utilisateurs, afin que je puisse éviter d'enregistrer plusieurs versions d'un même png dans cette instance. C'est à dire, si 100 personnes tous ont le même objet bytearray (en raison de la même option) puis ils ont tous partager le même fichier png.
InformationsquelleAutor Max Williams | 2012-05-29