Quelle est une bonne façon de convertir un chemin de fichier (URI) dans un System.Guid? Je voudrais minimiser la possibilité d'une collision, mais je suis heureux avec un hachage raisonnablement unique (probablement jamais plus de quelques douzaines/cent éléments dans la base de données)Convertir URI en GUID
Répondre
Il n'y a pas besoin. Hash URI avec md5 ou sha1 et c'est tout. Les GUID ne sont pas pour hacher les choses. Ils voulaient être créés uniques indépendamment de tout le reste.
Si vous avez l'option d'un registre/base de données centralisé, vous pouvez gérer un résolveur d'URL GUID < -> et générer un nouveau GUID pour chaque URL dont vous avez besoin. Cela utiliserait les GUID de la manière prévue, réduisant la probabilité de collision avec les GUID générés de manière native.
Michael, excellente suggestion. Je garderai cela à l'esprit au cas où je rencontrerais des problèmes avec le cryptage md5. –
La méthode "correcte" (selon RFC 4122 §4.3) consiste à créer un UUID basé sur le nom. L'avantage de cela (plutôt que d'utiliser un hachage MD5) est que ces derniers sont garantis de ne pas entrer en collision avec des UUID sans nom, et ont une (très) petite possibilité de collision avec d'autres UUID basés sur des noms.
Il n'y a pas de support natif dans le .NET Framework pour créer ceux-ci, mais en utilisant le code similar to this, vous pouvez créer un GUID comme suit:
Guid guid = GuidUtility.Create(GuidUtility.UrlNamespace, filePath);
Pour réduire encore le risque de collisions avec d'autres GUIDs, vous pouvez créer un GUID privé à utiliser comme ID d'espace de nom (au lieu d'utiliser l'ID d'espace de noms d'URL défini dans la RFC).
Notez que * similaire * est le mot clé en * similaire à ceci *. Si vous voulez que vos UUID correspondent au cas de test du RFC (qui, malheureusement, n'a qu'un seul test pour le type 3, et aucun pour le type 5), il est nécessaire de changer le code qui manipule 'newGuid [6]' manipuler 'newGuid [7]', et supprimer 'SwapByteOrder'. –
@PeterTaylor: RFC4122 est incorrect et possède une errata qui corrige le code C (http://rfc-editor.org/errata_search.php?rfc=4122&eid=1352). Si cette implémentation n'est pas entièrement conforme à la RFC4122 et à ses errata, veuillez fournir plus de détails; Je voudrais le faire suivre la norme. –
- 1. Comment convertir Guid [] en String?
- 2. Convertir une chaîne en Uri
- 3. Convertir string en guid dans DataColumn
- 4. Comment convertir un Guid en un tableau Byte en Javascript?
- 5. Comment convertir un GUID en chaîne en C#?
- 6. NHibernate: Convertir Guid en chaîne dans la requête
- 7. Comment convertir une chaîne d'objet en objet Guid dans C#
- 8. Convertir la valeur de chaîne en valeur GUID
- 9. Convertir la chaîne en GUID dans Actionscript 3
- 10. Conversion d'un GUID non géré en un Guid géré^
- 11. C# question - comment convertir un PageURI & Href en URL/URI?
- 12. Conversion d'un Guid en Guidable Nullable
- 13. Nullable GUID
- 14. Transformer une chaîne en Uri ... (Android)
- 15. comment convertir une chaîne passée dans un constructeur à Uri?
- 16. Conversion de GUID en chaîne
- 17. Conversion d'un GUID en System.Drawing.Imaging.ImageFormat
- 18. Active Directory GUID
- 19. VB.NET Analyse d'un type d'objet en type GUID
- 20. Convertir latin1 en utf8?
- 21. Convertir GUID en chaîne en base décimale (alias un énorme entier délimité par des virgules, en base dix)
- 22. Accès aux membres Guid en C#
- 23. problème guid avec asp.net en utilisant C#
- 24. Génération simple de GUID en C
- 25. comment créer GUID en Java EE
- 26. Flex: Conversion d'un GUID en Base64
- 27. Convertir en rubis
- 28. Afficher un GUID au format 36 lettres
- 29. aide .htaccess, en remplaçant le segment URI
- 30. HttpWebRequests envoie URI parameterless en-tête d'autorisation
Appréciez la fessée, mais je dois les rééquiper dans un système qui dépend déjà de Guids. EDIT: ah, je vois md5 crée un nombre de 128 bits, ce qui équivaut à un guid. Je peux partir d'ici je pense. –
Je ne suis pas sûr, mais je pense qu'il peut y avoir une collision avec les GUID "générés nativement" de cette façon si vous en générez beaucoup –
salut, je suis intéressé de savoir quel programme OU comment convertir l'URI en md5 hash ? Y at-il un utilitaire quelque part dans VS? Merci! – VoodooChild