Générer de hachage Unique pour un champ dans SQL Server

Je suis dans le processus de rédaction d'un Fournisseur d'appartenances pour une utilisation avec notre existants effectif de base. J'utilise EF4.1 pour l'ensemble de mes accès de base de données et l'un des émis que je suis en cours d'exécution dans est lorsque la DB a été à l'origine de l'installation les relations ont été fait par programme plutôt que dans la db. Si les relations doit être effectuée sur une colonne qui n'est pas obligatoire pour tous nos utilisateurs, mais afin de rendre les relations ne doivent être uniques (à partir de ma compréhension).

Ma solution que je crois que de travailler est de faire un hachage MD5 sur le champ userid (qui est unique ...ce qui voudrait/devrait garantir une valeur unique dans ce domaine). La partie que je vais avoir des problèmes avec sql server est la requête qui ferait cela SANS avoir à remplacer les valeurs existantes stockées dans le employeeNum champ (celui en question).

Donc, en résumé, ma question est de. Quelle est la meilleure façon d'obtenir une valeur unique dans la employeeNum champ (éventuellement sur la base d'un hash md5 de la userid champ) sur toutes les lignes dont la valeur n'est pas déjà présent. Aussi, pour un mineur/majeur mesure...est-ce son comme un bon plan?

Pas de commentaire sur le problème à portée de main, mais, en général, ne pas utiliser l'algorithme MD5. Vous devez utiliser certaines saveur de la SHA à mon humble avis. stackoverflow.com/questions/2768913/... ... vous pouvez également lire MD5 problèmes de collision ici: en.wikipedia.org/wiki/MD5#Collision_vulnerabilities
Je suis conscient des différences entre eux/possible/collision/etc, j'ai énumérés MD5 en raison de la taille de la table de hachage, mais à la fin de la journée, je ne suis pas vraiment préoccupé par le hachage utilisé, seulement qu'une valeur unique est généré. Une valeur de hachage doit accomplir cela, lorsqu'il est basé sur un nom d'utilisateur (qui est unique). Nous avons un PETIT (90 ish) de l'appartenance à la base, mais certains d'entre eux sont des vendeurs...qui est ce qui m'a amené à ne pas passer à l'asp, fournisseur d'appartenances. Donc en bref, je suis conscient de la petite domaine de collision MD5, mais je ne suis pas du tout ensemble, inquiète beaucoup.
Donc, si vous êtes au courant de la possibilité de collision avec MD5, et sont toujours prêts à l'utiliser pour générer de "l'unique" des valeurs (qui peut ne pas être unique), pouvez-vous décrire plus précisément ce que tu veux dire par "meilleur"? Aussi pouvez-vous expliquer pourquoi vous avez besoin d'une valeur de hachage de l'id d'utilisateur au lieu de simplement le nom d'utilisateur?
la possibilité d'une collision avec 250ish enregistrements (en supposant que notre base d'adhésion gonfle) et un hachage générés dans des < 50% d'entre eux AU PLUS (hachage utilisé uniquement pour les fournisseurs) est très éloignée. Comme je l'ai dit si je ne suis pas pointilleux sur QUI de hachage est utilisée. J'ai énuméré MD5 dû à la plus petite de hachage de taille et parce que le hash n'est pas utilisé pour la sécurité, mais plutôt utilisé pour son caractère unique.
Toute chance que vous pouvez démarrer sur le bon modèle de données? EF ne devrait pas être pointé sur une colonne nullable pour l'unicité. Pourquoi ne peut-il pas utiliser l'identifiant de la relation au lieu de l'option employeeNum?

OriginalL'auteur Jared | 2012-06-08