Hash d'un texte de la cellule dans la feuille de calcul Google
Comment puis-je calculer le MD5 ou SHA1 hash de texte dans une cellule spécifique et de le régler à une autre cellule dans la feuille de calcul Google?
Est là une formule comme =ComputeMD5(A1)
ou =ComputeSHA1(A1)
?
Ou est-il possible d'écrire formule personnalisée pour cela? Comment?
Vous devez vous connecter pour publier un commentaire.
Ouvrir
Tools > Script Editor
puis collez le code suivant:Enregistrez le script après et ensuite utiliser le
MD5()
fonction de votre feuille de calcul en faisant référence à une cellule.Ce script est basé sur Utilitaires.computeDigest() fonction.
Utilities.sleep(100)
quelque part à l'intérieur de la fonction, afin de l'empêcher de s'écraser lors de l'utilisation de la fonction de remplissage automatique (sinon, vous allez courir dans une limite sur la façon dont souvent une fonction peut être appelée)md5sum(1)
n'; par exemplefrew
dans la cli donnec241183cbf6766bd86061a60d6c8fe1b
avec pas de saut de ligne, maiscfb5d06a43aad502d0f6219143ba0e34
de la fonction.hashVal += 256
devrait lirehashVal += 128
bien. Utlities.computeDigest() renvoie un tableau d'octets. Les octets sont représentés par des entiers allant de -128 à 127. L'ajout de 128 va les convertir en nombres entre 0 et 256.Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, input, Utilities.Charset.UTF_8);
Grâce à gabhubert pour le code.
C'est le SHA1 version de ce code (très simple changement)
Ok, il a obtenu,
Besoin de créer une fonction personnalisée comme expliqué dans
http://code.google.com/googleapps/appsscript/articles/custom_function.html
Et ensuite utiliser les api comme expliqué dans
http://code.google.com/googleapps/appsscript/service_utilities.html
J'ai besoin de handtype la fonction complète du nom afin que je puisse voir le résultat dans la cellule.
Voici un exemple de code qui a donné de la base de 64 codé de hachage du texte
pour obtenir des hachages pour une plage de cellules, ajouter ce côté gabhubert de la fonction:
et de l'utiliser dans la cellule de cette façon:
Il retourne gamme de mêmes dimensions que la source de l'un, les valeurs de propagation vers le bas et à droite de la cellule avec des formules.
Universel unique de la valeur de la fonction de gamme-func méthode de conversion (ref), et c'est beaucoup plus rapide que de les séparer formuleas pour chaque cellule; dans ce formulaire, il travaille aussi pour la cellule unique, alors peut-être il vaut la peine de réécrire fonction de la source de cette façon.
À l'aide de @gabhubert réponse, vous pourriez faire, si vous voulez obtenir les résultats de l'ensemble de la ligne. À partir de l'éditeur de script.
Et puis, dans le menu Exécuter, il suffit d'exécuter la fonction straightToText() de sorte que vous pouvez obtenir votre résultat, et échapper au trop grand nombre d'appels à une fonction d'erreur.
Basé sur @gabhubert mais à l'aide du tableau des opérations pour obtenir la représentation hexadécimale
La différence entre cette solution et les autres est:
1), Il résout le problème de certains de la solution ci-dessus ont avec la compensation de la sortie de
Utilities.computeDigest
(qu'il compense par 128 au lieu de 256)2) Il résout un problème dans lequel certaines autres solutions pour produire la même valeur de hachage pour les différentes entrées en appelant
JSON.stringify()
surinput
avant de passer àUtilities.computeDigest()
J'étais à la recherche d'une option qui serait plus courte résultat. Que pensez-vous de cela? Il renvoie seulement 4 caractères. La mauvaise partie est qu'il utilise des i et o, qui peut être confondu pour L et 0, respectivement, avec la bonne police et dans les calottes il ne serait pas beaucoup d'importance.