如何解决LocalKeyEncryptionKeyAsyncClient的用法
我正在尝试将blob上传到azure blob存储,但我想使用客户端存储的密钥(而不是在Azure KeyVault上)进行客户端加密。我想使用最新的Java SDK-v12。 我发现对于客户端加密,我应该使用EncryptedBlobClient类,该类通过EncryptedBlobClientBuilder实例化。 EncryptedBlobClientBuilder要求设置AsyncKeyEncryptionKey,我想使用存储在我这一边的密钥-LocalKeyEncryptionKeyAsyncClient是否用于这些需求?我在这堂课上找不到很多。 谢谢
解决方法
sample使用ResolveKeyAsync
方法返回RsaKey。如果您不想将密钥存储到KeyVault中,则无需使用它,则可以随意使用密钥。
RsaKey rsa = new RsaKey("your private Key");
// Create the encryption policy to be used for upload and download.
BlobEncryptionPolicy policy = new BlobEncryptionPolicy(rsa,null);
// Set the encryption policy on the request options.
BlobRequestOptions options = new BlobRequestOptions();
options.setEncryptionPolicy(policy);
// Upload the encrypted contents to the blob.
blob.upload(stream,size,null,options,null);
有关更多详细信息,请参见类似的issue。
更新:
有answer个类似问题。
JsonWebKey localKey = JsonWebKey.fromAes(new SecretKeySpec(encryptionKeyBytes,"AES"),Arrays.asList(KeyOperation.WRAP_KEY,KeyOperation.UNWRAP_KEY)).setId("my-id");
AsyncKeyEncryptionKey akek = new LocalKeyEncryptionKeyClientBuilder().buildAsyncKeyEncryptionKey(localKey).block();
EncryptedBlobClient encryptedBlobClient = new EncryptedBlobClientBuilder()
.endpoint(serviceClient.getAccountUrl())
.sasToken("<SAS token>")
.containerName(containerName)
.blobName(blobName)
.key(akek,KeyWrapAlgorithm.A256KW.toString())
.buildEncryptedBlobClient();
encryptedBlobClient.uploadFromFile(filepath);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。