Bonjour,

jusqu'à présent, pour calculer le hash d'un fichier, dans Firefox, j'utilisais la fonction suivante


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function fa03_fichier_sha1(vv_fichier) {
// piqué ici : http://developer.mozilla.org/en/docs/nsICryptoHash 
  try {
  	netscape.security.PrivilegeManager.enablePrivilege(XPC);
  } catch (e) {
  	alert("Vous n'avez pas l\'autorisation de lire des fichiers!!");
  	return null;
  }
  var path = vv_fichier;
  var f = Components.classes[FL].createInstance(nsiLocalFile);
  f.initWithPath(path);
  var istream = Components.classes[FINPUT].createInstance(nsIFileInputStream);
  istream.init(f, 0x01, 0444,Components.interfaces.nsIFileInputStream.CLOSE_ON_EOF);
 
  var ch = Components.classes[HASH].createInstance(nsICryptoHash);
  ch.init(ch.SHA1);
  const PR_UINT32_MAX = 0xffffffff;
  ch.updateFromStream(istream, PR_UINT32_MAX);
  var hash = ch.finish(false);
  var s = [fa03_toHexString(hash.charCodeAt(i)) for (i in hash)].join("");
  return s;
}
function fa03_toHexString(charCode) {
  return ("0" + charCode.toString(16)).slice(-2);
}

Comme l'objet "Components" sera bientôt supprimé, je pensais utiliser le script trouvé ici :

http://www.movable-type.co.uk/scripts/sha1.html

Mais je ne trouve pas les mêmes hash. Je pensais que l'algo était universel ...
Et comme je me base sur ce hash pour déterminer l'unicité d'un fichier, j'ai tout faux, car je ne trouve pas dans ma base de donnée le hash calculé à la nouvelle sauce et je me retrouve avec des fichiers en doublon !!!!

Il y a-t'il quelque chose qui m'a échappé ?
D'avance, merci pour vos lumières ...