Google Spreadsheet: Cryptez le contenu de la cellule avec le script Google Apps
-
27-12-2019 - |
Question
J'ai une feuille de calcul Google et je voudrais crypter le contenu de quelques cellules (je ne me soucie pas de quelle méthode de cryptage est utilisée tant qu'il existe une méthode de décryptage équivalente pour iOS).
Malheureusement, il n'y a pas de fonctions de cryptage intégrées dans le script Google Apps.
Pour cette raison, j'aimerais utiliser une bibliothèque JavaScript open source comme Crypto-JS et SJCL .
Comment puis-je utiliser l'une de ces bibliothèques avec le script Google Apps?
Dans la documentation de script Google Apps, je n'ai trouvé aucun indice sur la manière d'utiliser des bibliothèques JavaScript externes avec mon script Google Apps.
La solution
Eh bien, je vais dire cela, car c'est la méthode que j'ai utilisée avec date JS . Vous pouvez faire ce qui suit:
- Téléchargez le (s) fichier (s) .js (s).
- Ouvrez le (s) fichier .js dans un éditeur de texte
- Copiez / coller tout le code dans un nouveau projet script
- Vous pouvez "recréer" les fichiers originaux .js (la source de copie / colle individuellement) avec les mêmes noms
- Inclure la clé de projet de ce projet de script en tant que bibliothèque du projet dans lequel vous souhaitez utiliser ces fonctions.
Même si les projets sont open-source, vous voudrez vous assurer de vous conformer aux licences de ces projets si vous allez les utiliser.
Ceci est essentiellement un petit "hack" autour de ne pas pouvoir télécharger des fichiers .js dans des projets de gaz. En supposant que la JS soit standard, cette méthode fonctionnera avec le système de Google.
L'autre option consiste à trouver simple trouver un package crypto à un ou deux fonctions léger, ou un seul algorithme de crypto comme AES-128 (TAHT que vous recevez la permission d'utiliser, bien sûr). Cela dépend vraiment de la quantité de cryptage que vous souhaitez, si vous devez inverser le texte de chiffrement pour obtenir les valeurs ordinaires, etc.
S'il s'agit d'une sorte de système de mot de passe, je vous recommanderais d'utiliser un hash simple. Par exemple:
function stringHash (someString) {
var hash = 0;
if (this.length == 0) return hash;
for (i = 0; i < this.length; i++) {
char = this.charCodeAt(i);
hash = ((hash << 5) - hash) + char;
hash = hash & hash;
}
return Math.abs(hash); // Personally I don't like negative values, so I abs'd it
}
dans lequel vous demanderiez le mot de passe d'un utilisateur et si le mot de passe a assorti le hachage stocké dans la feuille de calcul ou où vous pouvez valider. Vous pouvez l'utiliser pour simuler la journalisation dans une interface graphique UIAPP, par exemple: stockez les noms d'utilisateur / mot de passe dans une base de données et valider un utilisateur avant de charger l'application "vraie".
Toutefois, comme l'a mentionné Serge, les feuilles de calcul contiendront des antécédents de révision de la valeur initiale avant qu'il ne soit haché, ainsi que la valeur après sa hayhed. Si vous voulez éviter cela, utilisez SCRIMDDB.
edit : selon la demande, j'ai inclus Une source d'open source cryptage "package" (contient la base64 également, qui est agréable) dans la réponse, d'agir comme une référence pour d'autres personnes qui souhaitent crypter au gaz. Assurez-vous de suivre la demande de l'auteur, qui consiste à conserver son droit d'auteur d'origine et à revenir à la source.
Autre que les AES I Lié et le hash simple (équivalent à Java's String.HashCode ()), dont la ressource peut être trouvée ici , il y a Crypto-JS comme vous l'avez mentionné dans votre question et, si vous avez pris le temps de copier / coller complètement Tout le code (en supposant que cela accepte les termes de la licence - je ne l'ai pas lu), vous pouvez utiliser cela par les étapes que j'ai décrites dans la moitié supérieure de ma réponse.
MD5 dans JavaScript est également un algorithme que vous pourriez utiliser. Si vous utilisez le code dans
Personnellement, j'utiliserais probablement simplement les modèles Hash et les modèles base-64 , comme la plupart de ce que vous utiliseriez ce cryptage pour n'est probablement pas incroyablement important. AES pourrait prendre un peu plus de temps à calculer - vous pouvez probablement vous faire fonctionner vous-même de voir si cela entraînera des problèmes majeurs avec des déclencheurs de temps pendant une période prolongée, mais je doute que ce serait un problème de toute façon.
Autres conseils
Les fonctions ci-dessus ne fonctionnent pas pour moi.Voici quelque chose ce que vous pouvez copier et coller dans les fiches de script (feuille de calcul) de script
function enc(str) {
var encoded = "";
for (i=0; i<str.length;i++) {
var a = str.charCodeAt(i);
var b = a ^ 123; // bitwise XOR with any number, e.g. 123
encoded = encoded+String.fromCharCode(b);
}
return encoded;
}
C'est ce que vous obtenez lorsque vous l'utilisez= ENC dans votre feuille de calcul
Basé sur ce message voici