次の方法で共有


CryptographyClient クラス

  • java.lang.Object
    • com.azure.security.keyvault.keys.cryptography.CryptographyClient

public class CryptographyClient

には CryptographyClient 、非対称キーと対称キーを使用して暗号化操作を実行する同期メソッドが用意されています。 クライアントは、構成されたキーを使用した暗号化、暗号化解除、キーのラップ解除、署名、検証操作をサポートしています。

作業の開始

Azure Key Vault サービスと対話するには、 クラスのインスタンス、コンテナー URLCryptographyClient、資格情報オブジェクトを作成する必要があります。

このドキュメントに示す例では、認証に DefaultAzureCredential という名前の資格情報オブジェクトを使用します。これは、ローカルの開発環境や運用環境を含むほとんどのシナリオに適しています。 また、運用環境での認証には マネージド ID を 使用することをお勧めします。 認証のさまざまな方法とそれに対応する資格情報の種類の詳細については、 Azure ID のドキュメントを参照してください

サンプル: 同期暗号化クライアントの構築

次のコード サンプルは、 を使用してCryptographyClientBuilderの作成CryptographyClientを示しています。

CryptographyClient cryptographyClient = new CryptographyClientBuilder()
     .keyIdentifier("<your-key-id>")
     .credential(new DefaultAzureCredentialBuilder().build())
     .buildClient();
JsonWebKey jsonWebKey = new JsonWebKey().setId("SampleJsonWebKey");
 CryptographyClient cryptographyClient = new CryptographyClientBuilder()
     .jsonWebKey(jsonWebKey)
     .buildClient();

[データの暗号化]

CryptographyClient 使用してデータを暗号化できます。

コード サンプル:

次のコード サンプルは、API を使用してデータを同期的に暗号化する方法を encrypt(EncryptionAlgorithm algorithm, byte[] plaintext) 示しています。

byte[] plaintext = new byte[100];
 new Random(0x1234567L).nextBytes(plaintext);

 EncryptResult encryptResult = cryptographyClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext);

 System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
     encryptResult.getCipherText().length, encryptResult.getAlgorithm());

メモ: 非同期サンプルについては、 を CryptographyAsyncClient参照してください。


データの暗号化を解除する

CryptographyClient 使用してデータの暗号化を解除できます。

コード サンプル:

次のコード サンプルは、API を使用してデータを同期的に復号化する方法を decrypt(EncryptionAlgorithm algorithm, byte[] ciphertext) 示しています。

byte[] ciphertext = new byte[100];
 new Random(0x1234567L).nextBytes(ciphertext);

 DecryptResult decryptResult = cryptographyClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext);

 System.out.printf("Received decrypted content of length: %d.%n", decryptResult.getPlainText().length);

メモ: 非同期サンプルについては、 を CryptographyAsyncClient参照してください。

メソッドの概要

修飾子と型 メソッドと説明
DecryptResult decrypt(DecryptParameters decryptParameters, Context context)

構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの 1 つのブロックを復号化します。

DecryptResult decrypt(EncryptionAlgorithm algorithm, byte[] ciphertext)

構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの 1 つのブロックを復号化します。

DecryptResult decrypt(EncryptionAlgorithm algorithm, byte[] ciphertext, Context context)

構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの単一ブロックを復号化します。

EncryptResult encrypt(EncryptParameters encryptParameters, Context context)

構成されたキーを使用して、任意のバイト シーケンスを暗号化します。

EncryptResult encrypt(EncryptionAlgorithm algorithm, byte[] plaintext)

構成されたキーを使用して、任意のバイト シーケンスを暗号化します。

EncryptResult encrypt(EncryptionAlgorithm algorithm, byte[] plaintext, Context context)

構成されたキーを使用して、任意のバイト シーケンスを暗号化します。

KeyVaultKey getKey()

構成されたキーの公開部分を取得します。

Response<KeyVaultKey> getKeyWithResponse(Context context)

構成されたキーの公開部分を取得します。

SignResult sign(SignatureAlgorithm algorithm, byte[] digest)

構成されたキーを使用してダイジェストから署名を作成します。

SignResult sign(SignatureAlgorithm algorithm, byte[] digest, Context context)

構成されたキーを使用してダイジェストから署名を作成します。

SignResult signData(SignatureAlgorithm algorithm, byte[] data)

構成されたキーを使用して、生データから署名を作成します。

SignResult signData(SignatureAlgorithm algorithm, byte[] data, Context context)

構成されたキーを使用して、生データから署名を作成します。

UnwrapResult unwrapKey(KeyWrapAlgorithm algorithm, byte[] encryptedKey)

最初にそのキーをラップするために使用された構成済みのキーを使用して、対称キーのラップを解除します。

UnwrapResult unwrapKey(KeyWrapAlgorithm algorithm, byte[] encryptedKey, Context context)

最初にそのキーをラップするために使用された構成済みのキーを使用して、対称キーのラップを解除します。

VerifyResult verify(SignatureAlgorithm algorithm, byte[] digest, byte[] signature)

構成されたキーを使用して署名を検証します。

VerifyResult verify(SignatureAlgorithm algorithm, byte[] digest, byte[] signature, Context context)

構成されたキーを使用して署名を検証します。

VerifyResult verifyData(SignatureAlgorithm algorithm, byte[] data, byte[] signature)

構成されたキーを使用して、生データに対して署名を検証します。

VerifyResult verifyData(SignatureAlgorithm algorithm, byte[] data, byte[] signature, Context context)

構成されたキーを使用して、生データに対して署名を検証します。

WrapResult wrapKey(KeyWrapAlgorithm algorithm, byte[] key)

構成されたキーを使用して対称キーをラップします。

WrapResult wrapKey(KeyWrapAlgorithm algorithm, byte[] key, Context context)

構成されたキーを使用して対称キーをラップします。

メソッドの継承元: java.lang.Object

メソッドの詳細

decrypt

public DecryptResult decrypt(DecryptParameters decryptParameters, Context context)

構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの 1 つのブロックを復号化します。 暗号化を解除できるのは 1 つのデータ ブロックのみです。このブロックのサイズは、ターゲット キーと使用するアルゴリズムによって異なります。 暗号化解除操作は、非対称キーと対称キーの両方でサポートされています。 この操作には、ローカル以外の keys/decrypt 操作に対するアクセス許可が必要です。

EncryptionAlgorithm 、指定された暗号化されたコンテンツの暗号化解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値はA128CBC、、A128CBCPAD、、A128CBC_HS256、、A128GCM、、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。

コード サンプル

暗号化されたコンテンツを復号化すると、応答が受信されたときに復号化されたコンテンツの詳細が出力されます。

byte[] myCiphertext = new byte[100];
 new Random(0x1234567L).nextBytes(myCiphertext);
 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(myCiphertext, iv);
 DecryptResult decryptedResult = cryptographyClient.decrypt(decryptParameters, new Context("key1", "value1"));

 System.out.printf("Received decrypted content of length: %d.%n", decryptedResult.getPlainText().length);

Parameters:

decryptParameters - 暗号化解除操作で使用するパラメーター。 たとえば、HMAC を使用して暗号テキストの整合性を最初に確認せずに CBC を使用しないことをお勧めします。 詳細については、「 パディングを使用した CBC モードの対称暗号化解除によるタイミングの脆弱性 」を参照してください。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

DecryptResultgetPlainText()復号化されたコンテンツを含む 。

decrypt

public DecryptResult decrypt(EncryptionAlgorithm algorithm, byte[] ciphertext)

構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの 1 つのブロックを復号化します。 暗号化を解除できるのは 1 つのデータ ブロックのみです。このブロックのサイズは、ターゲット キーと使用するアルゴリズムによって異なります。 暗号化解除操作は、非対称キーと対称キーの両方でサポートされています。 この操作には、ローカル以外の keys/decrypt 操作に対するアクセス許可が必要です。

EncryptionAlgorithm 、指定された暗号化されたコンテンツの暗号化解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値はA128CBC、、A128CBCPAD、、A128CBC_HS256、、A128GCM、、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。

コード サンプル

暗号化されたコンテンツを復号化すると、応答が受信されたときに復号化されたコンテンツの詳細が出力されます。

byte[] ciphertext = new byte[100];
 new Random(0x1234567L).nextBytes(ciphertext);

 DecryptResult decryptResult = cryptographyClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertext);

 System.out.printf("Received decrypted content of length: %d.%n", decryptResult.getPlainText().length);

Parameters:

algorithm - 暗号化解除に使用するアルゴリズム。
ciphertext - 暗号化を解除するコンテンツ。 たとえば、HMAC を使用して暗号テキストの整合性を最初に確認せずに CBC を使用しないことをお勧めします。 詳細については、「 パディングを使用した CBC モードの対称暗号化解除によるタイミングの脆弱性 」を参照してください。

Returns:

DecryptResultgetPlainText()復号化されたコンテンツを含む 。

decrypt

public DecryptResult decrypt(EncryptionAlgorithm algorithm, byte[] ciphertext, Context context)

構成されたキーと指定されたアルゴリズムを使用して、暗号化されたデータの 1 つのブロックを復号化します。 暗号化を解除できるのは 1 つのデータ ブロックのみです。このブロックのサイズは、ターゲット キーと使用するアルゴリズムによって異なります。 暗号化解除操作は、非対称キーと対称キーの両方でサポートされています。 この操作には、ローカル以外の keys/decrypt 操作に対するアクセス許可が必要です。

EncryptionAlgorithm 、指定された暗号化されたコンテンツの暗号化解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値はA128CBC、、A128CBCPAD、、A128CBC_HS256、、A128GCM、、A256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。

コード サンプル

暗号化されたコンテンツの暗号化を解除すると、応答が受信されたときに復号化されたコンテンツの詳細が出力されます。

byte[] ciphertextToDecrypt = new byte[100];
 new Random(0x1234567L).nextBytes(ciphertextToDecrypt);

 DecryptResult decryptionResult = cryptographyClient.decrypt(EncryptionAlgorithm.RSA_OAEP, ciphertextToDecrypt,
     new Context("key1", "value1"));

 System.out.printf("Received decrypted content of length: %d.%n", decryptionResult.getPlainText().length);

Parameters:

algorithm - 復号化に使用するアルゴリズム。
ciphertext - 復号化するコンテンツ。 たとえば、HMAC を使用して暗号テキストの整合性を確保せずに CBC を使用しないことをお勧めします。 詳細については、「 パディングを使用した CBC モード対称暗号化解除によるタイミングの脆弱性 」を参照してください。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

DecryptResultgetPlainText()復号化されたコンテンツを含む 。

encrypt

public EncryptResult encrypt(EncryptParameters encryptParameters, Context context)

構成されたキーを使用して、任意のバイト シーケンスを暗号化します。 暗号化操作では 1 つのデータ ブロックのみがサポートされ、そのサイズはターゲット キーと使用する暗号化アルゴリズムに依存します。 暗号化操作は、対称キーと非対称キーの両方でサポートされています。 非対称キーの場合、キーの公開部分が暗号化に使用されます。 この操作には、ローカル以外の keys/encrypt 操作に対するアクセス許可が必要です。

EncryptionAlgorithm 、指定した を暗号化するために使用するアルゴリズムの種類を示します plaintext。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCMA256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。

コード サンプル

コンテンツを暗号化すると、応答が受信されたときに、暗号化されたコンテンツの詳細が出力されます。

byte[] myPlaintext = new byte[100];
 new Random(0x1234567L).nextBytes(myPlaintext);
 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(myPlaintext, iv);
 EncryptResult encryptedResult = cryptographyClient.encrypt(encryptParameters, new Context("key1", "value1"));

 System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
     encryptedResult.getCipherText().length, encryptedResult.getAlgorithm());

Parameters:

encryptParameters - 暗号化操作で使用するパラメーター。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

EncryptResultgetCipherText()暗号化されたコンテンツを含む 。

encrypt

public EncryptResult encrypt(EncryptionAlgorithm algorithm, byte[] plaintext)

構成されたキーを使用して、任意のバイト シーケンスを暗号化します。 暗号化操作では 1 つのデータ ブロックのみがサポートされ、そのサイズはターゲット キーと使用する暗号化アルゴリズムに依存します。 暗号化操作は、対称キーと非対称キーの両方でサポートされています。 非対称キーの場合、キーの公開部分が暗号化に使用されます。 この操作には、ローカル以外の keys/encrypt 操作に対するアクセス許可が必要です。

EncryptionAlgorithm 、指定した を暗号化するために使用するアルゴリズムの種類を示します plaintext。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCMA256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。

コード サンプル

応答を受信したときに、コンテンツを暗号化し、暗号化されたコンテンツの詳細を出力します。

byte[] plaintext = new byte[100];
 new Random(0x1234567L).nextBytes(plaintext);

 EncryptResult encryptResult = cryptographyClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintext);

 System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
     encryptResult.getCipherText().length, encryptResult.getAlgorithm());

Parameters:

algorithm - 暗号化に使用するアルゴリズム。
plaintext - 暗号化するコンテンツ。

Returns:

EncryptResultgetCipherText()暗号化されたコンテンツを含む 。

encrypt

public EncryptResult encrypt(EncryptionAlgorithm algorithm, byte[] plaintext, Context context)

構成されたキーを使用して、任意のバイト シーケンスを暗号化します。 暗号化操作では 1 つのデータ ブロックのみがサポートされ、そのサイズはターゲット キーと使用する暗号化アルゴリズムに依存します。 暗号化操作は、対称キーと非対称キーの両方でサポートされています。 非対称キーの場合、キーの公開部分が暗号化に使用されます。 この操作には、ローカル以外の keys/encrypt 操作に対するアクセス許可が必要です。

EncryptionAlgorithm 、指定した を暗号化するために使用するアルゴリズムの種類を示します plaintext。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP および RSA_OAEP_256です。 対称キーに使用できる値はA128CBC、、、A128CBCPAD、、A128CBC_HS256、、A128GCMA256CBCA192GCMA192CBCA192CBC_HS384A256CBCPADA192CBCPADA256CBC_HS512および A256GCMです。

コード サンプル

コンテンツを暗号化すると、応答が受信されたときに、暗号化されたコンテンツの詳細が出力されます。

byte[] plaintextToEncrypt = new byte[100];
 new Random(0x1234567L).nextBytes(plaintextToEncrypt);

 EncryptResult encryptionResult = cryptographyClient.encrypt(EncryptionAlgorithm.RSA_OAEP, plaintextToEncrypt,
     new Context("key1", "value1"));

 System.out.printf("Received encrypted content of length: %d, with algorithm: %s.%n",
     encryptionResult.getCipherText().length, encryptionResult.getAlgorithm());

Parameters:

algorithm - 暗号化に使用するアルゴリズム。
plaintext - 暗号化するコンテンツ。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

EncryptResultgetCipherText()暗号化されたコンテンツを含む 。

getKey

public KeyVaultKey getKey()

構成されたキーの公開部分を取得します。 キーの取得操作はすべてのキーの種類に適用でき、ローカル以外の操作に対するアクセス許可が keys/get 必要です。

コード サンプル

クライアントで構成されたキーを取得し、応答が受信されたときに返されたキーの詳細を出力します。

KeyVaultKey key = cryptographyClient.getKey();

 System.out.printf("Key returned with name: %s and id: %s.%n", key.getName(), key.getId());

Returns:

Mono要求された KeyVaultKeyを含む 。

getKeyWithResponse

public Response getKeyWithResponse(Context context)

構成されたキーの公開部分を取得します。 キーの取得操作はすべてのキーの種類に適用でき、ローカル以外の操作に対するアクセス許可が keys/get 必要です。

コード サンプル

クライアントで構成されたキーを取得し、応答が受信されたときに返されたキーの詳細を出力します。

KeyVaultKey keyWithVersion = cryptographyClient.getKeyWithResponse(new Context("key1", "value1")).getValue();

 System.out.printf("Key is returned with name: %s and id %s.%n", keyWithVersion.getName(),
     keyWithVersion.getId());

Parameters:

context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

Mono要求された KeyVaultKeyResponse<T>value含む を含む 。

sign

public SignResult sign(SignatureAlgorithm algorithm, byte[] digest)

構成されたキーを使用してダイジェストから署名を作成します。 署名操作では、非対称キーと対称キーの両方がサポートされます。 この操作には、ローカル以外の keys/sign 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、ダイジェストから署名を作成するために使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512RS512RS256RS384PS256RS384および RS512です。

コード サンプル

応答が受信されると、ダイジェストによって署名の詳細が出力されます。

byte[] data = new byte[100];
 new Random(0x1234567L).nextBytes(data);
 MessageDigest md = MessageDigest.getInstance("SHA-256");
 md.update(data);
 byte[] digest = md.digest();

 SignResult signResult = cryptographyClient.sign(SignatureAlgorithm.ES256, digest);

 System.out.printf("Received signature of length: %d, with algorithm: %s.%n", signResult.getSignature().length,
     signResult.getAlgorithm());

Parameters:

algorithm - 署名に使用するアルゴリズム。
digest - 署名の作成元となるコンテンツ。

Returns:

作成 SignResult された署名を getSignature() 含む 。

sign

public SignResult sign(SignatureAlgorithm algorithm, byte[] digest, Context context)

構成されたキーを使用してダイジェストから署名を作成します。 署名操作では、非対称キーと対称キーの両方がサポートされます。 この操作には、ローカル以外の keys/sign 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、ダイジェストから署名を作成するために使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512RS512RS256RS384PS256RS384および RS512です。

コード サンプル

応答が受信されると、ダイジェストによって署名の詳細が出力されます。

byte[] dataToVerify = new byte[100];
 new Random(0x1234567L).nextBytes(dataToVerify);
 MessageDigest myMessageDigest = MessageDigest.getInstance("SHA-256");
 myMessageDigest.update(dataToVerify);
 byte[] digestContent = myMessageDigest.digest();

 SignResult signResponse = cryptographyClient.sign(SignatureAlgorithm.ES256, digestContent,
     new Context("key1", "value1"));

 System.out.printf("Received signature of length: %d, with algorithm: %s.%n", signResponse.getSignature().length,
     signResponse.getAlgorithm());

Parameters:

algorithm - 署名に使用するアルゴリズム。
digest - 署名の作成元となるコンテンツ。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

作成 SignResult された署名を getSignature() 含む 。

signData

public SignResult signData(SignatureAlgorithm algorithm, byte[] data)

構成されたキーを使用して、生データから署名を作成します。 符号データ操作では、非対称キーと対称キーの両方がサポートされます。 この操作には、ローカル以外の keys/sign 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、ダイジェストの署名に使用するアルゴリズムの種類を示します。 使用できる値は、ES256、、ES384、、ES256KES512RS512RS256RS384PS256RS384および RS512です。

コード サンプル

未加工データを署名すると、応答が受信されたときに署名の詳細が出力されます。

byte[] data = new byte[100];
 new Random(0x1234567L).nextBytes(data);

 SignResult signResult = cryptographyClient.sign(SignatureAlgorithm.ES256, data);

 System.out.printf("Received signature of length: %d, with algorithm: %s.%n", signResult.getSignature().length,
     signResult.getAlgorithm());

Parameters:

algorithm - 署名に使用するアルゴリズム。
data - 署名の作成元となるコンテンツ。

Returns:

作成 SignResult された署名を getSignature() 含む 。

signData

public SignResult signData(SignatureAlgorithm algorithm, byte[] data, Context context)

構成されたキーを使用して、生データから署名を作成します。 符号データ操作では、非対称キーと対称キーの両方がサポートされます。 この操作には、ローカル以外の keys/sign 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、ダイジェストの署名に使用するアルゴリズムの種類を示します。 使用可能な値はES256、、ES384、、ES512、、ES256KPS256RS384RS512RS256RS384、および RS512です。

コード サンプル

未加工データに署名すると、応答が受信されたときに署名の詳細が出力されます。

byte[] plainTextData = new byte[100];
 new Random(0x1234567L).nextBytes(plainTextData);

 SignResult signingResult = cryptographyClient.sign(SignatureAlgorithm.ES256, plainTextData);

 System.out.printf("Received signature of length: %d, with algorithm: %s.%n",
     signingResult.getSignature().length, new Context("key1", "value1"));

Parameters:

algorithm - 署名に使用するアルゴリズム。
data - 署名の作成元のコンテンツ。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

SignResult作成されたgetSignature()署名を含む 。

unwrapKey

public UnwrapResult unwrapKey(KeyWrapAlgorithm algorithm, byte[] encryptedKey)

最初にそのキーをラップするために使用された構成済みのキーを使用して、対称キーのラップを解除します。 この操作は、ラップ操作の逆です。 アンラップ操作では、アンラップする非対称キーと対称キーがサポートされます。 この操作には、ローカル以外の keys/unwrapKey 操作に対するアクセス許可が必要です。

KeyWrapAlgorithm 、指定された暗号化されたキー コンテンツのラップ解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値は、 A128KWA192KW 、 です A256KW

コード サンプル

キー コンテンツのラップを解除すると、応答が受信されたときに、ラップされていないキーの詳細が出力されます。

byte[] keyContent = new byte[100];
 new Random(0x1234567L).nextBytes(keyContent);

 WrapResult wrapKeyResult = cryptographyClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyContent,
     new Context("key1", "value1"));
 UnwrapResult unwrapResult = cryptographyClient.unwrapKey(KeyWrapAlgorithm.RSA_OAEP,
     wrapKeyResult.getEncryptedKey());

 System.out.printf("Received key of length %d", unwrapResult.getKey().length);

Parameters:

algorithm - キーのラップに使用する暗号化アルゴリズム。
encryptedKey - ラップ解除する暗号化されたキーコンテンツ。

Returns:

UnwrapResultgetKey()ラップされていないキーの結果を含む 。

unwrapKey

public UnwrapResult unwrapKey(KeyWrapAlgorithm algorithm, byte[] encryptedKey, Context context)

最初にそのキーをラップするために使用された構成済みのキーを使用して、対称キーのラップを解除します。 この操作は、ラップ操作の逆です。 アンラップ操作では、アンラップする非対称キーと対称キーがサポートされます。 この操作には、ローカル以外の keys/unwrapKey 操作に対するアクセス許可が必要です。

KeyWrapAlgorithm 、指定された暗号化されたキー コンテンツのラップ解除に使用するアルゴリズムの種類を示します。 非対称キーに使用できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値は、 A128KWA192KW 、 です A256KW

コード サンプル

キー コンテンツのラップを解除すると、応答が受信されたときに、ラップされていないキーの詳細が出力されます。

byte[] keyContentToWrap = new byte[100];
 new Random(0x1234567L).nextBytes(keyContentToWrap);
 Context context = new Context("key1", "value1");

 WrapResult wrapKeyContentResult =
     cryptographyClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyContentToWrap, context);
 UnwrapResult unwrapKeyResponse =
     cryptographyClient.unwrapKey(KeyWrapAlgorithm.RSA_OAEP, wrapKeyContentResult.getEncryptedKey(), context);

 System.out.printf("Received key of length %d", unwrapKeyResponse.getKey().length);

Parameters:

algorithm - キーのラップに使用する暗号化アルゴリズム。
encryptedKey - ラップ解除する暗号化されたキーコンテンツ。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

UnwrapResultgetKey()ラップされていないキーの結果を含む 。

verify

public VerifyResult verify(SignatureAlgorithm algorithm, byte[] digest, byte[] signature)

構成されたキーを使用して署名を検証します。 検証操作では、対称キーと非対称キーの両方がサポートされます。 非対称キーの場合は、キーの公開部分を使用して署名を検証します。 この操作には、ローカル以外の keys/verify 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、署名の検証に使用するアルゴリズムの種類を示します。 使用可能な値はES256、、ES384、、ES512、、ES256KPS256RS384RS512RS256RS384、および 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 CryptographyClient.sign() operation.
 VerifyResult verifyResult = cryptographyClient.verify(SignatureAlgorithm.ES256, myDigest, signature);

 System.out.printf("Verification status: %s.%n", verifyResult.isValid());

Parameters:

algorithm - 署名に使用するアルゴリズム。
digest - 署名の作成元のコンテンツ。
signature - 検証対象の署名。

Returns:

verify

public VerifyResult verify(SignatureAlgorithm algorithm, byte[] digest, byte[] signature, Context context)

構成されたキーを使用して署名を検証します。 検証操作では、対称キーと非対称キーの両方がサポートされます。 非対称キーの場合は、キーの公開部分を使用して署名を検証します。 この操作には、ローカル以外の keys/verify 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、署名の検証に使用するアルゴリズムの種類を示します。 使用可能な値はES256、、ES384、、ES512、、ES256KPS256RS384RS512RS256RS384、および RS512です。

コード サンプル

指定したダイジェストに対して署名を検証し、応答が受信されたときに検証の詳細を出力します。

byte[] dataBytes = new byte[100];
 new Random(0x1234567L).nextBytes(dataBytes);
 MessageDigest msgDigest = MessageDigest.getInstance("SHA-256");
 msgDigest.update(dataBytes);
 byte[] digestBytes = msgDigest.digest();

 // A signature can be obtained from the SignResult returned by the CryptographyClient.sign() operation.
 VerifyResult verifyResponse = cryptographyClient.verify(SignatureAlgorithm.ES256, digestBytes, signatureBytes,
     new Context("key1", "value1"));

 System.out.printf("Verification status: %s.%n", verifyResponse.isValid());

Parameters:

algorithm - 署名に使用するアルゴリズム。
digest - 署名の作成元のコンテンツ。
signature - 検証対象の署名。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

verifyData

public VerifyResult verifyData(SignatureAlgorithm algorithm, byte[] data, byte[] signature)

構成されたキーを使用して、生データに対して署名を検証します。 検証操作では、対称キーと非対称キーの両方がサポートされます。 非対称キーの場合は、キーの公開部分を使用して署名を検証します。 この操作には、ローカル以外の keys/verify 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、署名の検証に使用するアルゴリズムの種類を示します。 使用可能な値はES256、、ES384、、ES512、、ES256KPS256RS384RS512RS256RS384、および RS512です。

コード サンプル

未加工データに対して署名を検証し、応答が受信されたときに検証の詳細を出力します。

byte[] myData = new byte[100];
 new Random(0x1234567L).nextBytes(myData);

 // A signature can be obtained from the SignResult returned by the CryptographyClient.sign() operation.
 VerifyResult verifyResult = cryptographyClient.verify(SignatureAlgorithm.ES256, myData, signature);

 System.out.printf("Verification status: %s.%n", verifyResult.isValid());

Parameters:

algorithm - 署名に使用するアルゴリズム。
data - 署名の検証対象となる生コンテンツ。
signature - 検証対象の署名。

Returns:

verifyData

public VerifyResult verifyData(SignatureAlgorithm algorithm, byte[] data, byte[] signature, Context context)

構成されたキーを使用して、生データに対して署名を検証します。 検証操作では、対称キーと非対称キーの両方がサポートされます。 非対称キーの場合は、キーの公開部分を使用して署名を検証します。 この操作には、ローカル以外の keys/verify 操作に対するアクセス許可が必要です。

SignatureAlgorithm 、署名の検証に使用するアルゴリズムの種類を示します。 使用可能な値はES256、、ES384、、ES512、、ES256KPS256RS384RS512RS256RS384、および RS512です。

コード サンプル

未加工データに対して署名を検証し、応答が受信されたときに検証の詳細を出力します。

byte[] dataToVerify = new byte[100];
 new Random(0x1234567L).nextBytes(dataToVerify);

 // A signature can be obtained from the SignResult returned by the CryptographyClient.sign() operation.
 VerifyResult verificationResult = cryptographyClient.verify(SignatureAlgorithm.ES256, dataToVerify,
     mySignature, new Context("key1", "value1"));

 System.out.printf("Verification status: %s.%n", verificationResult.isValid());

Parameters:

algorithm - 署名に使用するアルゴリズム。
data - 署名の検証対象となる生コンテンツ。
signature - 検証対象の署名。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

wrapKey

public WrapResult wrapKey(KeyWrapAlgorithm algorithm, byte[] key)

構成されたキーを使用して対称キーをラップします。 ラップ操作では、対称キーと非対称キーの両方で対称キーをラップできます。 この操作には、ローカル以外の keys/wrapKey 操作に対するアクセス許可が必要です。

KeyWrapAlgorithm 、指定したキー コンテンツをラップするために使用するアルゴリズムの種類を示します。 指定できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値は、 A128KWA192KW 、 です A256KW

コード サンプル

応答が受信されたときに、ラップされたキーの詳細を出力するキー コンテンツをラップします。

byte[] key = new byte[100];
 new Random(0x1234567L).nextBytes(key);

 WrapResult wrapResult = cryptographyClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, key);

 System.out.printf("Received encrypted key of length: %d, with algorithm: %s.%n",
     wrapResult.getEncryptedKey().length, wrapResult.getAlgorithm());

Parameters:

algorithm - キーのラップに使用する暗号化アルゴリズム。
key - ラップするキー コンテンツ。

Returns:

WrapResultgetEncryptedKey()ラップされたキーの結果を含む 。

wrapKey

public WrapResult wrapKey(KeyWrapAlgorithm algorithm, byte[] key, Context context)

構成されたキーを使用して対称キーをラップします。 ラップ操作では、対称キーと非対称キーの両方で対称キーをラップできます。 この操作には、ローカル以外の keys/wrapKey 操作に対するアクセス許可が必要です。

KeyWrapAlgorithm 、指定したキー コンテンツをラップするために使用するアルゴリズムの種類を示します。 使用できる値は、 RSA1_5RSA_OAEP 、 です RSA_OAEP_256。 対称キーに使用できる値は、 A128KWA192KW 、 です A256KW

コード サンプル

応答が受信されたときにラップされたキーの詳細を出力するキー コンテンツをラップします。

byte[] keyToWrap = new byte[100];
 new Random(0x1234567L).nextBytes(keyToWrap);

 WrapResult keyWrapResult = cryptographyClient.wrapKey(KeyWrapAlgorithm.RSA_OAEP, keyToWrap,
     new Context("key1", "value1"));

 System.out.printf("Received encrypted key of length: %d, with algorithm: %s.%n",
     keyWrapResult.getEncryptedKey().length, keyWrapResult.getAlgorithm());

Parameters:

algorithm - キーのラップに使用する暗号化アルゴリズム。
key - ラップするキー コンテンツ。
context - サービス呼び出し中に を HttpPipeline 介して渡される追加のコンテキスト。

Returns:

WrapResultgetEncryptedKey()ラップされたキーの結果を含む 。

適用対象