如何使用 OpenPGP 从一个 blob 解密到另一个
How to use OpenPGP to decrypt from one blob to another
我每天都会将多个 PGP 加密文件导入到我的 blob 存储中。我需要能够将它们解密到同一个 blob 容器中的另一个位置。
我已经知道我必须创建一个自定义批处理 activity 才能在 ADF 中执行此操作,我只是无法弄清楚如何将 blob 获取到 OpenPgp
来自 bitscry.com 的示例代码建议使用流作为示例:
using (FileStream inputFileStream = new FileStream(@"C:\TEMP\keys\content__encrypted2.pgp", FileMode.Open))
using (Stream outputFileStream = File.Create(@"C:\TEMP\keys\content__decrypted2.txt"))
using (Stream privateKeyStream = new FileStream(@"C:\TEMP\keys\private.asc", FileMode.Open))
pgp.DecryptStream(inputFileStream, outputFileStream, privateKeyStream, "password");
我试过将 blob 作为流打开,但它不起作用。
这是尝试将 blob 用作流的代码:
Stream sourceStream = keyBlockBlob.OpenRead();
Stream keyStream = sourceCloudBlockBlob.OpenRead();
Stream targetStream = targetCloudBlockBlob.OpenWrite();
pgp.DecryptStream(sourceStream, targetStream, keyStream, "password");
我发现我做错了什么。在传递给 DecryptStream 之前,我没有将流位置重置为零。此代码有效:
var sourceStream = new MemoryStream();
var keyStream = new MemoryStream();
var targetStream = new MemoryStream();
sourceCloudBlockBlob.DownloadToStream(sourceStream);
sourceStream.Position = 0;
keyBlockBlob.DownloadToStream(keyStream);
keyStream.Position = 0;
pgp.DecryptStream(sourceStream, targetStream, keyStream, "password");
targetStream.Position = 0;
targetCloudBlockBlob.UploadFromStream(targetStream);
我每天都会将多个 PGP 加密文件导入到我的 blob 存储中。我需要能够将它们解密到同一个 blob 容器中的另一个位置。
我已经知道我必须创建一个自定义批处理 activity 才能在 ADF 中执行此操作,我只是无法弄清楚如何将 blob 获取到 OpenPgp
来自 bitscry.com 的示例代码建议使用流作为示例:
using (FileStream inputFileStream = new FileStream(@"C:\TEMP\keys\content__encrypted2.pgp", FileMode.Open))
using (Stream outputFileStream = File.Create(@"C:\TEMP\keys\content__decrypted2.txt"))
using (Stream privateKeyStream = new FileStream(@"C:\TEMP\keys\private.asc", FileMode.Open))
pgp.DecryptStream(inputFileStream, outputFileStream, privateKeyStream, "password");
我试过将 blob 作为流打开,但它不起作用。
这是尝试将 blob 用作流的代码:
Stream sourceStream = keyBlockBlob.OpenRead();
Stream keyStream = sourceCloudBlockBlob.OpenRead();
Stream targetStream = targetCloudBlockBlob.OpenWrite();
pgp.DecryptStream(sourceStream, targetStream, keyStream, "password");
我发现我做错了什么。在传递给 DecryptStream 之前,我没有将流位置重置为零。此代码有效:
var sourceStream = new MemoryStream();
var keyStream = new MemoryStream();
var targetStream = new MemoryStream();
sourceCloudBlockBlob.DownloadToStream(sourceStream);
sourceStream.Position = 0;
keyBlockBlob.DownloadToStream(keyStream);
keyStream.Position = 0;
pgp.DecryptStream(sourceStream, targetStream, keyStream, "password");
targetStream.Position = 0;
targetCloudBlockBlob.UploadFromStream(targetStream);