我有一个Google电子表格,并希望加密几个小区的内容(只要有iOS的等效解密方法,我不关心正在使用的加密方法)。

不幸的是,Google Apps脚本中没有内置加密功能。

因为这个原因,我想使用 crypto-js sjcl

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

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

有帮助吗?

解决方案

好吧,我会说这个,因为这是我与日期js 一起使用的方法。您可以执行以下操作:

  1. 下载源.js文件。
  2. 在文本编辑器中打开.js文件
  3. 将所有代码复制/粘贴到新的脚本项目
    • 在这里,您可以“重新创建”原始的.js文件(单独复制/粘贴源),其中包含相同的名称
  4. 将该脚本项目的项目键包含为您想要使用这些功能的项目的
  5. 即使项目是开源,您需要确保如果您将使用它们,请确保您遵守这些项目的许可证。

    这基本上是一个小的“黑客”,没有能够将.js文件上传到天然气项目。假设JS是标准的,这种方法将与谷歌的系统合作。


    另一个选项是简单查找轻量级或两函数加密包,或单个加密算法,如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 - 除此之外,我会说目前可能无法将非气体代码库“导入”脚本项目,除非您手动复制源文件逐个文件到脚本项目中。问题跟踪器可能有一个功能请求,如果不是,您可以创建一个,我会明白它。


    编辑:根据请求,我包括开源AES 加密“包”(也包含Base64,也包含在答案中),作为想要在天然气加密的其他人的参考。确保您遵循作者的要求,该请求是保留原始版权并链接回源。

    除了链接的AES和简单的哈希(等于Java的String.HashCode()),可以找到它的资源这里,您在问题中提到的加密JS,如果您花了时间全面复制/粘贴。所有代码(假设与许可证的条款同意 - 我尚未阅读),您可以通过我在答案的上半部分中描述的步骤使用。

    md5在javascript 中也是您可以使用的算法。如果在页面顶部的 md5.js 中使用代码,则您可以拥有所需的东西。再次,如果您使用它,请确保您按照许可规则。

    p> p>我可能只是使用散列 base-64 模式,因为大多数你将使用这种加密的大多数都是不可思议的重要性。 AES可能需要更长的时间来计算 - 你可以自己基准,看看它是否会在延长一段时间内运行的触发器造成重大问题,但我怀疑这将是一个问题。

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

    编辑再次:我不熟悉iOS开发或其内部,但它似乎对我来说, iOS至少可以做一些加密操作< / a>。您可能希望阅读更多这些方法,因为我并不真正肯定你如何将天然气和iOS放在一起;不幸的是,我无法在该地区提供任何帮助。

其他提示

上面的功能对我不起作用。以下是您可以将其复制和粘贴到Google Sheets(电子表格)脚本编辑器

中的内容
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;
}
.

这是您在电子表格中使用它= enc时的目标

基于此帖子这里

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top