因此,我的公司是绿色照明项目,我们将工作的机密图像存储在谷歌驱动器。我们的硬盘设置为几个人,但是我被要求用Google脚本制作一个web应用程序,这样用户就可以从那里访问数据,而不知道它实际上存储在驱动器上。
我觉得有点不舒服,因为我们在GSuite域中的Team上有jpeg和png。如果可能的话,我宁愿以加密的格式存储图像。
我发现了一个AES加密库命名 CryptoGS (主流JavaScript库CryptoJS的衍生物),它似乎可以很好地处理文本等等。我希望利用它来创建加密版本的google文件,并只在我的was应用程序中解密它们。这样的话,如果一个内部人被盗用并从谷歌驱动器下载数据卖给竞争对手,这些文件就毫无用处了。
这是我的测试代码,看看我能不能运行双向加密方案.通过在script.google.com上创建自己的代码并添加库MSJnPeion6nzdLewGV60xWqi_phDA33 33(关于如何添加库这里的说明),可以自己运行相同的代码。
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上的图像会是一个简单的修正吗?
发布于 2018-12-11 03:46:19
我认为当二进制数据被直接使用时,可能会发生数据的损坏。那么这次修改怎么样?
修改要点:
getBlob().getDataAsString()修改为getBytes().toString()。
我认为有几个解决办法。所以请把这当成他们中的一员。
修改脚本:
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
}参考文献:
如果我误解了你的问题,请告诉我。我想修改一下。
https://stackoverflow.com/questions/53716568
复制相似问题