clé unique pour identifier un fichier

clé unique pour identifier un fichier - Java - Programmation

Marsh Posté le 21-03-2004 à 02:54:21    

Bonjour a tous,
Je cherche a trouver une fonction java qui me permettrai d'identifier un fichier de facon unique sans se fier à son path ni même à son nom. C'est a dire que 2 fichiers, de nom different et pas placé au meme endroit sur le disque auront la meme clé si leur contenu est identique... Je pense qu'une fonction dehachage comme celle doit deja exister, si vous la connaissez ca avancerai bien mon projet.
Merci d'avance :)

Reply

Marsh Posté le 21-03-2004 à 02:54:21   

Reply

Marsh Posté le 21-03-2004 à 03:03:29    

précise pourquoi tu veux utiliser ça, j'ai l'impression que tu pars dans une direction douteuse (MD5 ou inode).


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-03-2004 à 03:25:39    

je veux pouvoir identifier un fichier sur le réseau. J'ai un projet pour les cours c'est de faire un logiciel de partage de fichier. J'aimerai donc reconnaitre un fichier en fonction de son contenu et pas de son chemin... Voilà pourquoi je veux utiliser ca.

Reply

Marsh Posté le 21-03-2004 à 09:52:01    

oké, algo de hachage alors, MD5 par exemple.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 21-03-2004 à 10:48:47    

pareil :jap:


---------------
IVG en france
Reply

Marsh Posté le 21-03-2004 à 11:08:19    

Tiens y a eu un topic similaire il y a quelques semaines mais je ne le retrouve pas :/

Reply

Marsh Posté le 22-03-2004 à 09:46:28    

Attention quand meme: si 2 fichiers ont un code de hashage differents, ils sont differents. Mais si ils ont code identique, ca ne veut pas forcement dire dire que ce sont les memes fichiers...


---------------
Light is right
Reply

Marsh Posté le 22-03-2004 à 14:33:20    

nerisson a écrit :

Attention quand meme: si 2 fichiers ont un code de hashage differents, ils sont differents. Mais si ils ont code identique, ca ne veut pas forcement dire dire que ce sont les memes fichiers...


 
bin c'est l'aglo de hashage qui est mauvais alors


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 22-03-2004 à 14:34:05    

darklord a écrit :


 
bin c'est l'aglo de hashage qui est mauvais alors


 
il a raison pour md5 mais la probabilite que ca arrive est infime


---------------
IVG en france
Reply

Marsh Posté le 22-03-2004 à 14:36:21    

darklord a écrit :


bin c'est l'aglo de hashage qui est mauvais alors


Bin non :??: Le hashage, de base, il va partir sur un modulo (2^128 pour MD5, je crois), donc y a forcément une probabilité un jour que 2 fichiers différents aient le même hashage.
De toute façon, pour passer d'un fichier de 3 Mo à un hashage de 128 bits, t'es obligé d'avoir de la perte d'infos. Ou alors t'as trouvé ZE algo de compression ultime et tu m'intéresses [:ddr555]

Reply

Marsh Posté le 22-03-2004 à 14:36:21   

Reply

Marsh Posté le 22-03-2004 à 14:37:43    

Taiche a écrit :


Bin non :??: Le hashage, de base, il va partir sur un modulo (2^128 pour MD5, je crois), donc y a forcément une probabilité un jour que 2 fichiers différents aient le même hashage.
De toute façon, pour passer d'un fichier de 3 Mo à un hashage de 128 bits, t'es obligé d'avoir de la perte d'infos. Ou alors t'as trouvé ZE algo de compression ultime et tu m'intéresses [:ddr555]


 
et les coco, merci de me prendre pour un neuneu. J'ai jamais parler de MD5 moi hein :o
 
et puis bon c'est clair que si il fait un hash de 128bits sur un fichier de 3mo faut pas trop rêver ...
 
La seule chose que je voulais dire c'est que si la probabilité qu'un meme has correspondent à deux fichier différents soit trop 'important' (=risque d'arriver) c'est que l'algo est inadapté à l'utilisation, stou :o


Message édité par darklord le 22-03-2004 à 14:38:36

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 22-03-2004 à 14:39:46    

darklord a écrit :


et les coco, merci de me prendre pour un neuneu.  


Ba vu comment tu maîtrises StringTokenizer, j'me méfie maintenant [:dawao]

Reply

Marsh Posté le 22-03-2004 à 14:45:32    

Moi je voulais juste dire qu'il peut effectivement utiliser un algo de hashage pour etre sur que 2 fichiers sont differents.
Mais si l'algo de hash dis que 2 fichiers sont egaux, alors il n'y a pas d'autre moyen de comparer ces 2 fichiers octet par octet afin d'etre sur qu'ils sont egaux.
C'est marrant mais je m'etait pose la question il y a quelques jours pour un probleme assez similaire. J'ecris un programme qui a besoin d'effectuer enormement de comparaison de chaines et je cherchais la methode la plus rapide pour le faire. Je suis alle fouiner dans le code de la classe String et j'ai regarde l'implementation de la methode equals() et j'ai ete surpris de voir qu'ils n'utilisent pas le code de hashage pour faire la comparaison... Si quelqu'un peut me dire pourquoi je suis preneur  :)


Message édité par nerisson le 22-03-2004 à 14:50:22

---------------
Light is right
Reply

Marsh Posté le 22-03-2004 à 14:46:37    

darklord a écrit :


et les coco, merci de me prendre pour un neuneu. J'ai jamais parler de MD5 moi hein :o


 
et quel algo de hashage miraculeux tu utilises?
parce que meme si le hashage est bon, la probabilite infime existe toujours  [:spamafote]


Message édité par uriel le 22-03-2004 à 14:47:44

---------------
IVG en france
Reply

Marsh Posté le 22-03-2004 à 14:56:33    

nerisson a écrit :

C'est marrant mais je m'ettait pose la question il y a quelques jours pour un probleme assez similaire. J'ecris un programme qui a besoin d'effectuer enormement de comparaison de chaines et je cherchais la methode la plus rapide pour le faire. Je suis alle fouiner dans le code de la classe String et j'ai regarde l'implementation de la methode equals() et j'ai ete suppris de voir qu'ils n'utilisent pas le code de hashage pour faire la comparaison... Si quelqu'un peut me dire pourquoi je suis preneur  :)  

Oué, première chose : toutes les chaines qui apparaissent dans le code source (constantes immédiates) sont "internalized" ce qui veut dire qu'elle ne seron jamais dupliquées en mémoire (les Strings sont immuables) mais que si un veut construire une nouvelle chaine représentant la même séquence de caractères, java réutilisara la chaine déjà existante. Donc comparer ce type de chaines, consiste à comparer des pointeurs.
Ensuite, pour les autres chaines (qui ne sont pas "internalized" ), calculer le hash nécessite de passer sur la chaine une fois (et une seule car le hash est caché), et si les hash sont égaux, de repasser encore une fois, pour vérifier l'égalité, ce qui est plus lent que de s'arrêter au premier caractère différent entre les 2 chaines.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-03-2004 à 14:57:49    

uriel a écrit :


 
et quel algo de hashage miraculeux tu utilises?
parce que meme si le hashage est bon, la probabilite infime existe toujours  [:spamafote]


c'est le mot 'infime' qui m'intéresse. du MD5 avec un fichier de 3go j'ai des doutes que la proba soit infimes.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 22-03-2004 à 15:01:23    

darklord a écrit :


c'est le mot 'infime' qui m'intéresse. du MD5 avec un fichier de 3go j'ai des doutes que la proba soit infimes.


"des" fichiers de 3 Go [:aloy]
La probabilité pour MD5 est de 1 sur 2^128 (la calculatrice de Ouinedoze me dit 3.4028236692093846346337460743177e+38). Perso, ça me semble largement suffisant ne serait-ce que pour un réseau local, où le total de fichiers sur toutes les machines n'arriverait pas à la cheville de ce chiffre [:spamafote]

Reply

Marsh Posté le 22-03-2004 à 15:02:35    

uriel a écrit :

et quel algo de hashage miraculeux tu utilises?

Hachoir double classique, acier anglais :
http://www.zodiacspco.co.uk/images/ZodiacPictureDirectory2000/Kitchenware/HAC.hachoir.24.400.jpg


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-03-2004 à 15:04:36    

Taiche a écrit :


"des" fichiers de 3 Go [:aloy]
La probabilité pour MD5 est de 1 sur 2^128 (la calculatrice de Ouinedoze me dit 3.4028236692093846346337460743177e+38). Perso, ça me semble largement suffisant ne serait-ce que pour un réseau local, où le total de fichiers sur toutes les machines n'arriverait pas à la cheville de ce chiffre [:spamafote]


La loi de Murphy tu connais ?  :D


---------------
Light is right
Reply

Marsh Posté le 22-03-2004 à 15:05:32    

ce nombre [:aloy]
 
par contre, je suis très étonné que Dark ne connaisse rien (ou en tout cas ait de sérieuses lacunes) au hachage, je le croyais plus cultivé que ça.


---------------
trainoo.com, c'est fini
Reply

Marsh Posté le 22-03-2004 à 15:06:29    

nerisson a écrit :


La loi de Murphy tu connais ?  :D  


Alors forcément, si on se base dessus, smal barré [:ddr555]

Reply

Marsh Posté le 22-03-2004 à 15:06:40    

Reply

Marsh Posté le 22-03-2004 à 15:08:30    

nraynaud a écrit :

ce nombre [:aloy]
 
par contre, je suis très étonné que Dark ne connaisse rien (ou en tout cas ait de sérieuses lacunes) au hachage, je le croyais plus cultivé que ça.


 
 :heink: oui bon ok c'est bien.


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 22-03-2004 à 15:15:31    

je sens que ça va dégénérer, donc je plante mon drapeau :D

Reply

Marsh Posté le 22-03-2004 à 15:55:52    

Taiche a écrit :


Ba vu comment tu maîtrises StringTokenizer, j'me méfie maintenant [:dawao]

[:cupra]
ne rien dire, ne rien dire...


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 22-03-2004 à 15:56:22    

DarkLord a écrit :


 
bin c'est l'aglo de hashage qui est mauvais alors

ouais, l'aglo spa terrible :o
vaut mieux du bon vrai chêne massif :o


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 22-03-2004 à 15:57:28    

the real moins moins a écrit :

ouais, l'aglo spa terrible :o
vaut mieux du bon vrai chêne massif :o


 
[:rofl]


---------------
IVG en france
Reply

Marsh Posté le 22-03-2004 à 15:58:00    

stack ta race :fou:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed