La différence entre cette solution et les autres est :
1) Cela résout un problème rencontré par certaines des solutions ci-dessus avec le décalage de la sortie de Utilities.computeDigest
(il compense de 128 au lieu de 256)
2) Il résout un problème qui fait que d'autres solutions produisent le même hachage pour différentes entrées en appelant JSON.stringify()
sur input
avant de le passer à Utilities.computeDigest()
function MD5(input) {
var result = "";
var byteArray = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, JSON.stringify(input));
for (i=0; i < byteArray.length; i++) {
result += (byteArray[i] + 128).toString(16) + "-";
}
result = result.substring(result, result.length - 1); // remove trailing dash
return result;
}