7

私は Google スプレッドシートを持っていて、いくつかのセルの内容を暗号化したいと考えています (iOS に同等の復号化方法がある限り、どの暗号化方法が使用されているかは気にしません)。

残念ながら、Google Apps Script には組み込みの暗号化関数はありません。

このため、 Crypto-JSsjclなどのオープン ソースの Javascript ライブラリを使用したいと考えています。

これらのライブラリの 1 つを Google Apps Script で使用するにはどうすればよいですか?

Google Apps Script のドキュメントでは、Google Apps Script で外部 JavaScript ライブラリを使用する方法についての手がかりが見つかりませんでした。

4

2 に答える 2

10

これは、私がDate JSで使用した方法であるためです。次のことができます。

  1. ソース .js ファイルをダウンロードします。
  2. テキスト エディターで .js ファイルを開きます。
  3. すべてのコードをコピーして新しいスクリプト プロジェクトに貼り付けます
    • ここで、元の .js ファイル (ソースを個別にコピー/貼り付け) を同じ名前で「再作成」できます。
  4. そのスクリプト プロジェクトのプロジェクト キーを、それらの関数を使用するプロジェクトのライブラリとして含めます。

プロジェクトがオープンソースであっても、それらを使用する場合は、それらのプロジェクトのライセンスに準拠していることを確認する必要があります.

これは基本的に、.js ファイルを GAS プロジェクトにアップロードできないことに関する小さな「ハック」です。JS が標準であると仮定すると、このメソッドは Google のシステムで動作します。


もう1つのオプションは、軽量の1つまたは2つの機能の暗号化パッケージ、またはAES-128のような単一の暗号化アルゴリズムを簡単に見つけることです(もちろん、使用許可が与えられています)。暗号化テキストを元に戻してプレーンな値を取得する必要があるかどうかなど、必要な暗号化の程度によって異なります。

これがある種のパスワード システムの場合は、単純なハッシュを使用することをお勧めします。例えば:

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
}

ユーザーのパスワードを要求し、パスワード ハッシュがスプレッドシートまたはその他の場所に保存されているハッシュと一致する場合は、検証します。これを使用して、UiApp GUI へのログインをシミュレートできます。たとえば、データベースにユーザー名/パスワード ハッシュを保存し、「実際の」アプリをロードする前にユーザーを検証します。


ただし、Serge が述べたように、スプレッドシートには、ハッシュされる前の元の値と、ハッシュされた後の値の改訂履歴が含まれます。これを回避したい場合は、ScriptDB を使用してください。


PS - この回避策に加えて、スクリプト プロジェクトにファイルごとにソースを手動でコピーしない限り、現在、GAS 以外のコード ライブラリをスクリプト プロジェクトに "インポート" することはできません。Issue Tracker にすでに機能リクエストがあるかもしれませんが、そうでない場合は、作成してスターを付けてください。


編集: 要求に応じて、オープン ソースの AES暗号化「パッケージ」(base64 も含まれています。これは素晴らしい) を回答に含めて、GAS で暗号化する他のユーザーの参照として機能します。元の著作権を保持し、ソースへのリンクを戻すという著者の要求に従っていることを確認してください。

リンクした AES と単純なハッシュ (Java の String.hashCode() に相当) 以外に、そのリソースはここにあります。質問で述べたように、Crypto-JS があります。すべてのコードを貼り付けます(ライセンスの条件に同意すると仮定します-私はそれを読んでいません)、回答の上半分で説明した手順でそれを使用できます。

Javascript の MD5も使用できるアルゴリズムです。ページの上部にあるmd5.jsのコードを使用すると、必要なものが得られます。繰り返しますが、使用する場合は、ライセンス規則に従っていることを確認してください。

個人的には、おそらくハッシュbase-64パターンを使用するでしょう。この暗号化を使用する目的のほとんどは、おそらくそれほど重要ではないからです。AES は計算に少し時間がかかる場合があります。おそらく自分でベンチマークを行って、長時間実行されるトリガーで大きな問題が発生するかどうかを確認できますが、とにかく問題になるとは思えません。

: base-64 は双方向で、AES も同様です。MD5 はハッシュの一種であり、私が提供した単純なハッシュ関数も (もちろん) ハッシュです。ハッシュ関数は一方向です。したがって、双方向の機能 (暗号化/復号化) が必要な場合は、base-64 または AES を使用してください。Base-64 は基本的に AES の子供向けバージョンです。そして単純なハッシュ関数は MD5 の子供向けバージョンです。これを覚えておいてください:)

もう一度編集: iOS の開発やその内部には詳しくありませんが、iOS は少なくともいくつかの暗号化操作を実行できるようです。ただし、GAS と iOS をどのように組み合わせているのかよくわからないため、これらのメソッドについて詳しくお読みになることをお勧めします。残念ながら、その分野でこれ以上お手伝いすることはできません。

于 2013-11-19T00:25:12.903 に答える