当前位置: 首页 > 知识库问答 >
问题:

Azure斑点的动态加密

齐昊苍
2023-03-14

我不知道还有什么其他的选择:1。将blob下载到云服务的文件系统(或者azure文件存储帐户)并加密它。2.将加密文件上传到目的blob存储帐户。3.从共享中删除加密文件。

在这种情况下,是否有其他方法可以奏效?

共有1个答案

濮丰
2023-03-14

在这种情况下,是否有其他方法可以奏效?

据我所知,azure存储有两种加密。

一种是服务器端加密,Azure Storage在保存到存储之前自动加密数据,在检索之前自动解密数据。加密、解密和密钥管理对用户是完全透明的。

我们可以创建一个本地rsa密钥来加密它,然后您可以将这个rsa密钥存储在本地。

如果要从blob中解密加密的内容,可以使用rsa密钥。

更多详细信息,您可以参考下面的示例:

 public class LocalResolver : IKeyResolver
    {
        private Dictionary<string, IKey> keys = new Dictionary<string, IKey>();

        public void Add(IKey key)
        {
            keys[key.Kid] = key;
        }

        public async Task<IKey> ResolveKeyAsync(string kid, CancellationToken token)
        {
            IKey result;

            keys.TryGetValue(kid, out result);

            return await Task.FromResult(result);
        }
    }
  static void Main(string[] args)
        {
            Console.WriteLine("Blob encryption sample");

            // Retrieve storage account information from connection string
            // How to create a storage connection string - https://azure.microsoft.com/en-us/documentation/articles/storage-configure-connection-string/
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
            "DefaultEndpointsProtocol=https;AccountName=brandofirststorage;AccountKey=4j8EjQzNtkzQ22Xp3NZcxvJz/+PUOOOQRTSZ9TieQg1lYM6eBCDpKoJgMcNWoG6p1GjMQhkYrxPKRBralzQoZA==;EndpointSuffix=core.windows.net");

            CloudBlobClient client = storageAccount.CreateCloudBlobClient();
            CloudBlobContainer container = client.GetContainerReference("example");


                container.CreateIfNotExists();
                int size = 5 * 1024 * 1024;
                byte[] buffer = new byte[size];

                Random rand = new Random();
                rand.NextBytes(buffer);

                CloudBlockBlob blob = container.GetBlockBlobReference("test");

                // Create the IKey used for encryption.
                RsaKey key = new RsaKey("private:key1");

                // Create the encryption policy to be used for upload.
                BlobEncryptionPolicy uploadPolicy = new BlobEncryptionPolicy(key, null);

                // Set the encryption policy on the request options.
                BlobRequestOptions uploadOptions = new BlobRequestOptions() { EncryptionPolicy = uploadPolicy };

                Console.WriteLine("Uploading the encrypted blob.");

                // Upload the encrypted contents to the blob.
                using (MemoryStream stream = new MemoryStream(buffer))
                {
                    blob.UploadFromStream(stream, size, null, uploadOptions, null);
                }





                // Download the encrypted blob.
                // For downloads, a resolver can be set up that will help pick the key based on the key id.
                LocalResolver resolver = new LocalResolver();
                resolver.Add(key);

                BlobEncryptionPolicy downloadPolicy = new BlobEncryptionPolicy(null, resolver);

                // Set the decryption policy on the request options.
                BlobRequestOptions downloadOptions = new BlobRequestOptions() { EncryptionPolicy = downloadPolicy };

                Console.WriteLine("Downloading the encrypted blob.");

                // Download and decrypt the encrypted contents from the blob.
                using (MemoryStream outputStream = new MemoryStream())
                {
                    blob.DownloadToStream(outputStream, null, downloadOptions, null);
                }

                Console.WriteLine("Press enter key to exit");
                Console.ReadLine();


        }
 类似资料:
  • 本文向大家介绍azure-webjobs 斑点触发,包括了azure-webjobs 斑点触发的使用技巧和注意事项,需要的朋友参考一下 示例 修改Azure存储Blob时触发的一个简单函数示例:            

  • 我尝试在我的DB中更新一个表“image”并插入blob类型。 ImageClass: Hibernate用户映射: 利布: 错误:

  • 问题内容: 对于跨进程的数据通信,我打算使用Redis列表。生产者推送到列表,而一组使用者使用BRPOP消费列表内容。 为了限制列表的大小无限增长,我想将列表大小限制为固定值(例如1万个项目)。我很惊讶地没有找到像BLPUSH或BRPUSH这样的等效命令。这是Redis员工故意遗漏的吗? 因此,我假设我必须在推送之前使用Watch / multi创建一个Txn来检查列表大小。这是正确的方法还是可用

  • 我想做什么? 我想使用命令行插入图片到MariaDB数据库,使用LOAD_FILE功能。 发生了什么? 我总是得到一个NULL返回。 我不想要这样的解决方案:这是糟糕的风格,到目前为止我还没有看到过-尝试存储完整的路径!我想将此图片存储在这个数据库中,而不是路径中。 系统 > ArchLinux 4.7.2-1-ARCH 一张叫做“测试”的照片。jpg(817KB)位于,甚至在 这张图片属于用户和

  • 我正在尝试构建一个在JavaFX中实现群聊的聊天应用程序。我想在边框窗格内创建一个滚动窗格,该窗格将包含用户所属的所有组。当用户加入时,需要将组图标(ImageViews)动态添加(在场景生成器中无法完成)到滚动窗格(在HBox内)。 目前,我正在使用一个SceneController类,该类负责所有阶段和场景更改。 我已经创建了一个FXML文件(使用场景生成器),其中包含一个边框窗格和一个滚动窗

  • 我正在尝试编写一个Python脚本,通过Spotify应用程序创建一个Spotify播放列表。我已经在Spotify的开发中心成功创建了一个应用程序,并将必要的变量输入到Spotipy的示例中(见下文)。但是,该脚本没有正确授权。我在服务器运行和不运行的情况下都进行了尝试,但都无济于事。堆栈上有类似的问题,但它们并没有提供完整的解决方案。任何建议都会很有帮助。 这是我通过命令提示符收到的消息: 用