CryptographyAsyncClient クラス
- java.
lang. Object - com.
azure. security. keyvault. keys. cryptography. CryptographyAsyncClient
- com.
public class CryptographyAsyncClient
には CryptographyAsyncClient 、非対称キーと対称キーを使用して暗号化操作を実行する非同期メソッドが用意されています。 クライアントは、構成されたキーを使用した暗号化、復号化、キーのラップ解除、キーのラップ解除、署名、検証の操作をサポートしています。
作業の開始
Azure Key Vault サービスと対話するには、 クラスのインスタンス、コンテナーの CryptographyAsyncClient URL、資格情報オブジェクトを作成する必要があります。
このドキュメントに示す例では、認証に DefaultAzureCredential という名前の資格情報オブジェクトを使用します。これは、ローカルの開発環境や運用環境など、ほとんどのシナリオに適しています。 さらに、運用環境での認証には マネージド ID を 使用することをお勧めします。 さまざまな認証方法と、それに対応する資格情報の種類の詳細については、 Azure Identity のドキュメントを参照してください。
サンプル: 非同期暗号化クライアントの構築
次のコード サンプルは、 を使用して CryptographyClientBuilder を構成する のCryptographyAsyncClient作成を示しています。
CryptographyAsyncClient cryptographyAsyncClient = new CryptographyClientBuilder()
.keyIdentifier("<your-key-id>")
.credential(new DefaultAzureCredentialBuilder().build())
.buildAsyncClient();
JsonWebKey jsonWebKey = new JsonWebKey().setId("SampleJsonWebKey");
CryptographyAsyncClient cryptographyAsyncClient = new CryptographyClientBuilder()
.jsonWebKey(jsonWebKey)
.buildAsyncClient();
[データの暗号化]
を CryptographyAsyncClient 使用してデータを暗号化できます。
コード サンプル:
次のコード サンプルは、API を使用してデータを非同期的に暗号化する方法を encrypt(EncryptionAlgorithm algorithm, byte[] plaintext) 示しています。
byte[] plaintext = new byte[100];
new Random(0x1234567L).nextBytes(plaintext);
cryptographyAsyncClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(encryptResult ->
System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
encryptResult.getCipherText().length, encryptResult.getAlgorithm().toString()));
メモ: 同期サンプルについては、 を CryptographyClient参照してください。
データの暗号化解除
を CryptographyAsyncClient 使用してデータの暗号化を解除できます。
コード サンプル:
次のコード サンプルは、API を使用してデータを非同期的に復号化する方法を decrypt(EncryptionAlgorithm algorithm, byte[] ciphertext) 示しています。
byte[] ciphertext = new byte[100];
new Random(0x1234567L).nextBytes(ciphertext);
cryptographyAsyncClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(decryptResult ->
System.out.printf("Received decrypted content of length: %d%n", decryptResult.getPlainText().length));
メモ: 同期サンプルについては、 を CryptographyClient参照してください。
メソッドの概要
メソッドの継承元: java.lang.Object
メソッドの詳細
decrypt
public Mono
構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの単一ブロックを復号化します。 暗号化を解除できるのは 1 つのデータ ブロックのみです。このブロックのサイズは、ターゲット キーと使用するアルゴリズムによって異なります。 暗号化解除操作は、非対称キーと対称キーの両方でサポートされています。 この操作には、ローカル以外の keys/decrypt
操作に対するアクセス許可が必要です。
は EncryptionAlgorithm 、指定した暗号化されたコンテンツの暗号化解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5、 RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCM、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。
コード サンプル
暗号化されたコンテンツを復号化します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに復号化されたコンテンツの詳細を出力します。
byte[] ciphertextBytes = new byte[100];
new Random(0x1234567L).nextBytes(ciphertextBytes);
byte[] iv = {
(byte) 0x1a, (byte) 0xf3, (byte) 0x8c, (byte) 0x2d, (byte) 0xc2, (byte) 0xb9, (byte) 0x6f, (byte) 0xfd,
(byte) 0xd8, (byte) 0x66, (byte) 0x94, (byte) 0x09, (byte) 0x23, (byte) 0x41, (byte) 0xbc, (byte) 0x04
};
DecryptParameters decryptParameters = DecryptParameters.createA128CbcParameters(ciphertextBytes, iv);
cryptographyAsyncClient.decrypt(decryptParameters)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(decryptResult ->
System.out.printf("Received decrypted content of length: %d.%n", decryptResult.getPlainText().length));
Parameters:
Returns:
decrypt
public Mono
構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの単一ブロックを復号化します。 暗号化を解除できるのは 1 つのデータ ブロックのみです。このブロックのサイズは、ターゲット キーと使用するアルゴリズムによって異なります。 暗号化解除操作は、非対称キーと対称キーの両方でサポートされています。 この操作には、ローカル以外の keys/decrypt
操作に対するアクセス許可が必要です。
は EncryptionAlgorithm 、指定した暗号化されたコンテンツの暗号化解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5、 RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCM、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。
コード サンプル
暗号化されたコンテンツを復号化します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに復号化されたコンテンツの詳細を出力します。
byte[] ciphertext = new byte[100];
new Random(0x1234567L).nextBytes(ciphertext);
cryptographyAsyncClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(decryptResult ->
System.out.printf("Received decrypted content of length: %d%n", decryptResult.getPlainText().length));
Parameters:
Returns:
encrypt
public Mono
構成されたキーを使用して、任意のバイト シーケンスを暗号化します。 暗号化操作では 1 つのデータ ブロックのみがサポートされ、そのサイズはターゲット キーと使用する暗号化アルゴリズムに依存します。 暗号化操作は、対称キーと非対称キーの両方でサポートされています。 非対称キーの場合、キーの公開部分が暗号化に使用されます。 この操作には、ローカル以外の keys/encrypt
操作に対するアクセス許可が必要です。
は EncryptionAlgorithm 、指定した を暗号化するために使用するアルゴリズムの種類を示します plaintext
。 非対称キーに使用できる値は、 RSA1_5、 RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCM、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。
コード サンプル
コンテンツを暗号化します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに暗号化されたコンテンツの詳細を出力します。
byte[] plaintextBytes = new byte[100];
new Random(0x1234567L).nextBytes(plaintextBytes);
byte[] iv = {
(byte) 0x1a, (byte) 0xf3, (byte) 0x8c, (byte) 0x2d, (byte) 0xc2, (byte) 0xb9, (byte) 0x6f, (byte) 0xfd,
(byte) 0xd8, (byte) 0x66, (byte) 0x94, (byte) 0x09, (byte) 0x23, (byte) 0x41, (byte) 0xbc, (byte) 0x04
};
EncryptParameters encryptParameters = EncryptParameters.createA128CbcParameters(plaintextBytes, iv);
cryptographyAsyncClient.encrypt(encryptParameters)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(encryptResult ->
System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
encryptResult.getCipherText().length, encryptResult.getAlgorithm().toString()));
Parameters:
Returns:
encrypt
public Mono
構成されたキーを使用して、任意のバイト シーケンスを暗号化します。 暗号化操作では 1 つのデータ ブロックのみがサポートされ、そのサイズはターゲット キーと使用する暗号化アルゴリズムに依存します。 暗号化操作は、対称キーと非対称キーの両方でサポートされています。 非対称キーの場合、キーの公開部分が暗号化に使用されます。 この操作には、ローカル以外の keys/encrypt
操作に対するアクセス許可が必要です。
は EncryptionAlgorithm 、指定した を暗号化するために使用するアルゴリズムの種類を示します plaintext
。 非対称キーに使用できる値は、 RSA1_5、 RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCM、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。
コード サンプル
コンテンツを暗号化します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに暗号化されたコンテンツの詳細を出力します。
byte[] plaintext = new byte[100];
new Random(0x1234567L).nextBytes(plaintext);
cryptographyAsyncClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(encryptResult ->
System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
encryptResult.getCipherText().length, encryptResult.getAlgorithm().toString()));
Parameters:
Returns:
getKey
public Mono
構成されたキーの公開部分を取得します。 キーの取得操作はすべてのキーの種類に適用でき、ローカル以外の操作に対するアクセス許可が keys/get
必要です。
コード サンプル
クライアントで構成されたキーを取得します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに返されたキーの詳細を出力します。
cryptographyAsyncClient.getKey()
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(key ->
System.out.printf("Key returned with name: %s, and id: %s.%n", key.getName(), key.getId()));
Returns:
getKeyWithResponse
public Mono
構成されたキーの公開部分を取得します。 キーの取得操作はすべてのキーの種類に適用でき、ローカル以外の操作に対するアクセス許可が keys/get
必要です。
コード サンプル
クライアントで構成されたキーを取得します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに返されたキーの詳細を出力します。
cryptographyAsyncClient.getKeyWithResponse()
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(keyResponse ->
System.out.printf("Key returned with name: %s, and id: %s.%n", keyResponse.getValue().getName(),
keyResponse.getValue().getId()));
Returns:
sign
public Mono
構成されたキーを使用してダイジェストから署名を作成します。 署名操作では、非対称キーと対称キーの両方がサポートされます。 この操作には、ローカル以外の keys/sign
操作に対するアクセス許可が必要です。
は SignatureAlgorithm 、ダイジェストから署名を作成するために使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512、RS512RS256RS384PS256RS384および RS512です。
コード サンプル
ダイジェストを歌います。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに署名の詳細を出力します。
byte[] data = new byte[100];
new Random(0x1234567L).nextBytes(data);
MessageDigest md = MessageDigest.getInstance("SHA-256");
md.update(data);
byte[] digest = md.digest();
cryptographyAsyncClient.sign(SignatureAlgorithm.ES256, digest)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(signResult ->
System.out.printf("Received signature of length: %d, with algorithm: %s.%n",
signResult.getSignature().length, signResult.getAlgorithm()));
Parameters:
Returns:
signData
public Mono
構成されたキーを使用して、生データから署名を作成します。 符号データ操作では、非対称キーと対称キーの両方がサポートされます。 この操作には、ローカル以外の keys/sign
操作に対するアクセス許可が必要です。
は SignatureAlgorithm 、ダイジェストの署名に使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512、RS512RS256RS384PS256RS384および RS512です。
コード サンプル
生データに署名します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに署名の詳細を出力します。
byte[] data = new byte[100];
new Random(0x1234567L).nextBytes(data);
cryptographyAsyncClient.sign(SignatureAlgorithm.ES256, data)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(signResult ->
System.out.printf("Received signature of length: %d, with algorithm: %s.%n",
signResult.getSignature().length, signResult.getAlgorithm()));
Parameters:
Returns:
unwrapKey
public Mono
そのキーをラップするために最初に使用された構成済みのキーを使用して、対称キーのラップを解除します。 この操作はラップ操作の逆です。 アンラップ操作では、アンラップする非対称キーと対称キーがサポートされています。 この操作には、ローカル以外の keys/unwrapKey
操作に対するアクセス許可が必要です。
は KeyWrapAlgorithm 、指定された暗号化されたキー コンテンツのラップ解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5、 RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値は、 A128KW、 A192KW 、 です A256KW。
コード サンプル
キーの内容のラップを解除します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときにラップされていないキーの詳細を出力します。
byte[] keyToWrap = new byte[100];
new Random(0x1234567L).nextBytes(key);
cryptographyAsyncClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyToWrap)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(wrapResult ->
cryptographyAsyncClient.unwrapKey(KeyWrapAlgorithm.RSA_OAEP, wrapResult.getEncryptedKey())
.subscribe(keyUnwrapResult ->
System.out.printf("Received key of length: %d.%n", keyUnwrapResult.getKey().length)));
Parameters:
Returns:
verify
public Mono
構成されたキーを使用して署名を検証します。 検証操作では、対称キーと非対称キーの両方がサポートされます。 非対称キーの場合は、キーの公開部分を使用して署名を検証します。 この操作には、ローカル以外の keys/verify
操作に対するアクセス許可が必要です。
は SignatureAlgorithm 、署名の検証に使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512、RS512RS256RS384PS256RS384および RS512です。
コード サンプル
指定したダイジェストに対して署名を検証します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに検証の詳細を出力します。
byte[] myData = new byte[100];
new Random(0x1234567L).nextBytes(myData);
MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
messageDigest.update(myData);
byte[] myDigest = messageDigest.digest();
// A signature can be obtained from the SignResult returned by the CryptographyAsyncClient.sign() operation.
cryptographyAsyncClient.verify(SignatureAlgorithm.ES256, myDigest, signature)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(verifyResult ->
System.out.printf("Verification status: %s.%n", verifyResult.isValid()));
Parameters:
Returns:
verifyData
public Mono
構成されたキーを使用して、生データに対して署名を検証します。 検証操作では、対称キーと非対称キーの両方がサポートされます。 非対称キーの場合は、キーの公開部分を使用して署名を検証します。 この操作には、ローカル以外の keys/verify
操作に対するアクセス許可が必要です。
は SignatureAlgorithm 、署名の検証に使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512、RS512RS256RS384PS256RS384および RS512です。
コード サンプル
生データに対して署名を検証します。 呼び出しを非同期的にサブスクライブし、応答が受信されたときに検証の詳細を出力します。
byte[] myData = new byte[100];
new Random(0x1234567L).nextBytes(myData);
// A signature can be obtained from the SignResult returned by the CryptographyAsyncClient.sign() operation.
cryptographyAsyncClient.verify(SignatureAlgorithm.ES256, myData, signature)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(verifyResult ->
System.out.printf("Verification status: %s.%n", verifyResult.isValid()));
Parameters:
Returns:
wrapKey
public Mono
構成されたキーを使用して対称キーをラップします。 ラップ操作では、対称キーと非対称キーの両方で対称キーをラップできます。 この操作には、ローカル以外の keys/wrapKey
操作に対するアクセス許可が必要です。
は KeyWrapAlgorithm 、指定したキー コンテンツをラップするために使用するアルゴリズムの種類を示します。 使用できる値は、 RSA1_5、 RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値は、 A128KW、 A192KW 、 です A256KW。
コード サンプル
キーの内容をラップします。 呼び出しを非同期的にサブスクライブし、応答が受信されたときにラップされたキーの詳細を出力します。
byte[] key = new byte[100];
new Random(0x1234567L).nextBytes(key);
cryptographyAsyncClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, key)
.contextWrite(Context.of("key1", "value1", "key2", "value2"))
.subscribe(wrapResult ->
System.out.printf("Received encrypted key of length: %d, with algorithm: %s.%n",
wrapResult.getEncryptedKey().length, wrapResult.getAlgorithm().toString()));
Parameters:
Returns:
適用対象
Azure SDK for Java