LocalKeyEncryptionKeyAsyncClient 的使用

Usage of LocalKeyEncryptionKeyAsyncClient

我正在尝试将 blob 上传到 azure blob 存储,但我希望使用存储在我这边(而不是 Azure KeyVault 上)的密钥进行客户端加密。我想使用最新的 Java SDK - v12。 我发现对于客户端加密,我应该使用 EncryptedBlobClient class,它是通过 EncryptedBlobClientBuilder 实例化的。 EncryptedBlobClientBuilder 需要设置 AsyncKeyEncryptionKey,我想使用存储在我身边的密钥 - LocalKeyEncryptionKeyAsyncClient 是否用于这些需求?我找不到太多关于这个 class 的信息。 谢谢

sample 使用 ResolveKeyAsync 方法 return 一个 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);

有关详细信息,请参阅类似的


更新:

有一个 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);