首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌硬盘加密图像与应用程序脚本?(cCryptoGS)

谷歌硬盘加密图像与应用程序脚本?(cCryptoGS)
EN

Stack Overflow用户
提问于 2018-12-11 02:37:56
回答 1查看 589关注 0票数 1

因此,我的公司是绿色照明项目,我们将工作的机密图像存储在谷歌驱动器。我们的硬盘设置为几个人,但是我被要求用Google脚本制作一个web应用程序,这样用户就可以从那里访问数据,而不知道它实际上存储在驱动器上。

我觉得有点不舒服,因为我们在GSuite域中的Team上有jpeg和png。如果可能的话,我宁愿以加密的格式存储图像。

我发现了一个AES加密库命名 CryptoGS (主流JavaScript库CryptoJS的衍生物),它似乎可以很好地处理文本等等。我希望利用它来创建加密版本的google文件,并只在我的was应用程序中解密它们。这样的话,如果一个内部人被盗用并从谷歌驱动器下载数据卖给竞争对手,这些文件就毫无用处了。

这是我的测试代码,看看我能不能运行双向加密方案.通过在script.google.com上创建自己的代码并添加库MSJnPeion6nzdLewGV60xWqi_phDA33 33(关于如何添加库这里的说明),可以自己运行相同的代码。

代码语言:javascript
复制
function TestEncryption()
{
  //Add library MSJnPeIon6nzdLewGV60xWqi_d-phDA33 to project to access CryptoGS functions
  
  var hash = "This is my secret passphrase";  
  var cipher = new cCryptoGS.Cipher(hash, 'aes');

  var origFile = DriveApp.getFileById("ID of an example file");
  
  var blob = origFile.getBlob().getDataAsString();
  
  var encryptedBlob = cipher.encrypt(blob);
  
  var encryptedFile = DriveApp.createFile("ENCRYPTEDTest", encryptedBlob);
  
  var newBlob = encryptedFile.getBlob().getDataAsString();
  
  var decryptedBlob = cipher.decrypt(newBlob);
  
  var decryptedFile = DriveApp.createFile("DECRYPTEDTest", decryptedBlob);
  
  
}

基本上,在对一个.GIF文件进行测试之后,我会得到一个名为ENCRYPTEDTest的加扰文件,以及一个名为DECRYPTEDTest的图像文件,即使在下载到我的桌面之后,该文件也已损坏并无法使用。调整这种加密方法以成功地保护Google上的图像会是一个简单的修正吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 03:46:19

我认为当二进制数据被直接使用时,可能会发生数据的损坏。那么这次修改怎么样?

修改要点:

  • 使用字节数组而不是blob。
    • getBlob().getDataAsString()修改为getBytes().toString()

  • 当数据被解码时,数字值被转换为字节数组,并转换为blob。

我认为有几个解决办法。所以请把这当成他们中的一员。

修改脚本:

代码语言:javascript
复制
function TestEncryption()
{
  //Add library MSJnPeIon6nzdLewGV60xWqi_d-phDA33 to project to access CryptoGS functions

  var hash = "This is my secret passphrase";
  var cipher = new cCryptoGS.Cipher(hash, 'aes');

  // Encode
  var origFile = DriveApp.getFileById("ID of an example file");
  var mimeType = origFile.getMimeType(); // Added
  var blob = origFile.getBlob().getBytes().toString(); // Modified
  var encryptedBlob = cipher.encrypt(blob);
  var encryptedFile = DriveApp.createFile("ENCRYPTEDTest", encryptedBlob);
  var newBlob = encryptedFile.getBlob().getDataAsString();

  // Decode
  var decryptedBlob = cipher.decrypt(newBlob);
  var b = Utilities.newBlob(decryptedBlob.split(","), mimeType, "DECRYPTEDTest"); // Added
  var decryptedFile = DriveApp.createFile(b); // Modified
}

参考文献:

如果我误解了你的问题,请告诉我。我想修改一下。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53716568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档