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.

Était-ce utile?

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:

  1. Téléchargez le (s) fichier (s) .js (s).
  2. Ouvrez le (s) fichier .js dans un éditeur de texte
  3. 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
  4. Inclure la clé de projet de ce projet de script en tant que bibliothèque du projet dans lequel vous souhaitez utiliser ces fonctions.
  5. 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.


    PS - En plus de ce travail, je dirai qu'il n'est pas possible de "importer" une bibliothèque de code sans gaz dans votre projet de script, à moins que vous ne copiez manuellement la source. fichier-by-file dans votre projet de script. Il peut y avoir une demande de fonctionnalité sur le problème suivant déjà, sinon vous pouvez en créer un et que je l'étendrai.


    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 MD5.JS situé en haut de la page, vous aurez de quoi vous avez besoin. Encore une fois, assurez-vous que vous suivez des règles de licence si vous l'utilisez.

    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.

    note : base-64 est à 2 voies, de même que AES. MD5 est un type de hachage et la fonction de hachage simple que j'ai fournie est également (bien sûr) un hash. Les fonctions de hachage sont à sens unique. Donc, si vous avez besoin de fonctionnalités bidirectionnelles (chiffrer / déchiffrer), utilisez la base-64 ou les AES. Base-64 est essentiellement la version Kid d'AES. Et la fonction de hachage simple est la version Kid de MD5. Gardez cela à l'esprit :)

    modifier à nouveau : Je ne connais pas le développement iOS ou ses internes, mais c'est me semble pour moi qui iOS peut au moins faire des opérations cryptographiques < / a>. Vous voudrez peut-être lire davantage dans ces méthodes, car je ne sais pas vraiment comment vous mettez le gaz et iOS ensemble; Je ne peux plus vous aider dans cette zone malheureusement.

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

 Entrez la description de l'image ici

Basé sur ce message voici

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top