Google Spreadsheet:使用Google Apps脚本加密单元内容

问题描述 投票:5回答:3

我有一个Google Spreadsheet,想对几个单元格的内容进行加密(只要有iOS的等效解密方法,我不在乎使用哪种加密方法。

很遗憾,Google Apps脚本中没有内置的加密功能。

因此,我想使用开源的Javascript库,例如Crypto-JSsjcl

如何将其中一个库与Google Apps脚本一起使用?

在Google Apps脚本文档中,我没有找到有关如何在我的Google Apps脚本中使用外部JavaScript库的任何线索。

javascript google-apps-script google-sheets cryptojs sjcl
3个回答
8
投票

好吧,我说这是因为这是我与Date JS一起使用的方法。您可以执行以下操作:

  1. 下载源.js文件。
  2. 在文本编辑器中打开.js文件
  3. 复制/粘贴所有代码到新的脚本项目
    • 这里您可以“重新创建”具有相同名称的原始.js文件(分别复制/粘贴源)
  4. 将该脚本项目的项目键包含为要在其中使用这些功能的项目的library

即使这些项目是开源的,如果要使用它们,也要确保遵守这些项目的许可证。

这基本上是一个小“小技巧”,它无法将.js文件上传到GAS项目中。假设JS是标准的,则此方法将适用于Google的系统。


另一个选择是简单地找到一个轻量级的一功能或二功能加密程序包,或单个加密算法,例如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代码库“导入”到脚本项目中,除非您手动逐个复制源文件,文件添加到您的脚本项目中。问题追踪器上可能已经有一项功能请求,如果没有,您可以创建一个功能请求,我将为其加注星标。


EDIT:根据请求,我在答案中包括了an open source AES加密“程序包”(也包含base64,这很好),以作为要在GAS中加密的其他人的参考。确保遵循作者的要求,即保留他的原始版权并链接回源。

除了我链接的AES和简单的哈希(等同于Java的String.hashCode())(可以在here中找到其资源之外,还有您在问题中提到的Crypto-JS,如果花了时间,要完全复制/粘贴所有代码(假设它们与许可条款相符-我尚未阅读),可以按照答案上半部分所述的步骤使用它。

MD5 in Javascript也是您可以使用的算法。如果您使用页面顶部md5.js中的代码,则将拥有所需的内容。同样,如果使用,请确保遵循许可规则。

个人而言,我可能只会使用hashbase-64模式,因为使用此加密的大部分内容可能并不重要。 AES可能需要更长的时间来计算-您可以自己对其进行基准测试,以查看它是否会在长时间运行的触发器上引起重大问题,但是我仍然怀疑这是一个问题。

:base-64是2路的,AES也是如此。 MD5是一种哈希,我提供的简单哈希函数也是(当然)哈希。哈希函数是单向的。因此,如果您需要双向功能(加密/解密),请使用base-64或AES。 Base-64本质上是AES的孩子版本。简单的哈希函数是MD5的孩子版本。请记住这一点:)

再次编辑

:我不熟悉iOS开发或其内部,但是对我来说iOS can at least do some cryptographic operations似乎[[似乎。但是,您可能需要阅读更多有关这些方法的信息,因为我不确定您如何将GAS和iOS放在一起。不幸的是,我不能在这个领域给您任何帮助。

0
投票
上面的功能对我不起作用。这是您可以复制并粘贴到Google表格(电子表格)脚本编辑器中的内容

0
投票
这是一个很老的问题,但是因为这是一个非常相关的答案,所以我将其发布:)
© www.soinside.com 2019 - 2024. All rights reserved.