CryptographicEngine.EncryptAndAuthenticate メソッド

定義

認証された暗号化を実行します。

public:
 static EncryptedAndAuthenticatedData ^ EncryptAndAuthenticate(CryptographicKey ^ key, IBuffer ^ data, IBuffer ^ nonce, IBuffer ^ authenticatedData);
 static EncryptedAndAuthenticatedData EncryptAndAuthenticate(CryptographicKey const& key, IBuffer const& data, IBuffer const& nonce, IBuffer const& authenticatedData);
public static EncryptedAndAuthenticatedData EncryptAndAuthenticate(CryptographicKey key, IBuffer data, IBuffer nonce, IBuffer authenticatedData);
function encryptAndAuthenticate(key, data, nonce, authenticatedData)
Public Shared Function EncryptAndAuthenticate (key As CryptographicKey, data As IBuffer, nonce As IBuffer, authenticatedData As IBuffer) As EncryptedAndAuthenticatedData

パラメーター

key
CryptographicKey

暗号化に使用する対称キー。

data
IBuffer

暗号化および認証されるデータ。

nonce
IBuffer

使用する Nonce。 nonce は、繰り返しの可能性が最小限の変数です。 たとえば、使用ごとに新しく生成されるランダムな値、タイム スタンプ、シーケンス番号、またはこれらの組み合わせを使用できます。 Microsoft GCM の実装には、12 バイトの nonce が必要です。 CCM 実装には、7 バイトから 13 バイトの nonce が必要です。

authenticatedData
IBuffer

認証済みデータ。 Null を指定できます。

戻り値

暗号化および認証されたデータ。メソッドが失敗した場合、認証は失敗します。メソッドが成功した場合は、認証も成功しました。

public void AuthenticatedDecryption(
    String strAlgName,
    CryptographicKey key,
    EncryptedAndAuthenticatedData objEncrypted,
    BinaryStringEncoding encoding,
    IBuffer buffNonce)
{
    // Declare a buffer to contain the decrypted data.
    IBuffer buffDecrypted;

    // Open a SymmetricKeyAlgorithmProvider object for the specified algorithm.
    SymmetricKeyAlgorithmProvider objAlgProv = SymmetricKeyAlgorithmProvider.OpenAlgorithm(strAlgName);

    // The input key must be securely shared between the sender of the encrypted message
    // and the recipient. The nonce must also be shared but does not need to be shared
    // in a secure manner. If the sender encodes the message string to a buffer, the
    // binary encoding method must also be shared with the recipient.
    // The recipient uses the DecryptAndAuthenticate() method as follows to decrypt the 
    // message, authenticate it, and verify that it has not been altered in transit.
    buffDecrypted = CryptographicEngine.DecryptAndAuthenticate(
        key,
        objEncrypted.EncryptedData,
        buffNonce,
        objEncrypted.AuthenticationTag,
        null);

    // Convert the decrypted buffer to a string (for display). If the sender created the
    // original message buffer from a string, the sender must tell the recipient what 
    // BinaryStringEncoding value was used. Here, BinaryStringEncoding.Utf8 is used to
    // convert the message to a buffer before encryption and to convert the decrypted
    // buffer back to the original plaintext.
    String strDecrypted = CryptographicBuffer.ConvertBinaryToString(encoding, buffDecrypted);

}

注釈

認証された暗号化は、1 回の操作でコンテンツを暗号化および認証します。 認証子 (タグとも呼ばれます) は暗号化中に使用され、プロセスの出力にはタグと暗号テキストのペアが含まれています。 詳細については、 AuthenticationTag プロパティと EncryptedData プロパティに関するページを 参照してください。 暗号化解除プロセスは、タグに対して暗号テキストを検証します。

認証された暗号化アルゴリズムは、SymmetricKeyAlgorithmProvider クラスで OpenAlgorithm メソッドを呼び出し、開くアルゴリズムの名前を指定した後で使用できます。 認証された暗号化と暗号化解除では、次のアルゴリズム名がサポートされています。

適用対象

こちらもご覧ください