好吧,我会这么说,因为这是我用于Date JS 的方法。您可以执行以下操作:
- 下载源 .js 文件。
- 在文本编辑器中打开 .js 文件
- 复制/粘贴所有代码到一个新的脚本项目
- 您可以在此处“重新创建”具有相同名称的原始 .js 文件(单独复制/粘贴源)
- 将该脚本项目的项目键包含为您要在其中使用这些功能的项目的库。
即使这些项目是开源的,如果要使用它们,您也需要确保遵守这些项目的许可。
这基本上是一个关于无法将 .js 文件上传到 GAS 项目的小“黑客”。假设 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 - 除了这个变通方法之外,我会说目前无法将非 GAS 代码库“导入”到您的脚本项目中,除非您手动复制源代码逐个文件到您的脚本项目中。问题跟踪器上可能已经有功能请求,如果没有,您可以创建一个,我会给它加星标。
编辑:根据要求,我在答案中包含了an open source AES 加密“包”(也包含 base64,这很好),作为其他人的参考在 GAS 中加密。确保您遵循作者的要求,即保留其原始版权并链接回源代码。
除了我链接的 AES 和简单的哈希(相当于 Java 的 String.hashCode()),其资源可以在 here 找到,还有你在问题中提到的 Crypto-JS,如果你拿是时候完全复制/粘贴所有代码了(假设它与许可条款一致——我还没有阅读过),您可以按照我在答案上半部分中描述的步骤来使用它。
MD5 in Javascript 也是您可以使用的算法。如果您使用位于页面顶部的 md5.js 中的代码,您将拥有所需的内容。同样,如果您使用它,请确保您遵循许可规则。
就我个人而言,我可能只使用 hash 和 base-64 模式,因为您使用这种加密的大部分内容可能并不重要。 AES 可能需要更长的时间来计算 - 您可以自己对其进行基准测试,看看它是否会导致触发器长时间运行时出现重大问题,但我怀疑这无论如何都会是一个问题。
注意:base-64 是 2-way,AES 也是。 MD5是一种hash,我提供的简单hash函数也是(当然)hash。哈希函数是单向的。因此,如果您需要双向功能(加密/解密),请使用 base-64 或 AES。 Base-64 本质上是 AES 的儿童版本。而简单的哈希函数就是MD5的儿童版。请记住这一点:)
再次编辑:我不熟悉 iOS 开发或其内部结构,但 似乎在我看来 iOS can at least do some cryptographic operations。不过,您可能想进一步了解这些方法,因为我不确定您是如何将 GAS 和 iOS 放在一起的。很遗憾,我无法在这方面为您提供更多帮助。