Creare entità ContentKey mediante .NETCreate ContentKeys with .NET

Servizi multimediali consente di creare asset crittografati e distribuirli.Media Services enables you to create and deliver encrypted assets. Un'entità ContentKey consente l'accesso sicuro alle entità Asset.A ContentKey provides secure access to your Assets.

Quando si crea un nuovo asset, ad esempio prima di caricare file, è possibile specificare le seguenti opzioni di crittografia: StorageEncrypted, CommonEncryptionProtected o EnvelopeEncryptionProtected.When you create a new asset (for example, before you upload files), you can specify the following encryption options: StorageEncrypted, CommonEncryptionProtected, or EnvelopeEncryptionProtected.

Quando si distribuiscono asset ai client, è possibile configurarli per la crittografia dinamica con una delle due seguenti opzioni: DynamicEnvelopeEncryption o DynamicCommonEncryption.When you deliver assets to your clients, you can configure for assets to be dynamically encrypted with one of the following two encryptions: DynamicEnvelopeEncryption or DynamicCommonEncryption.

Gli asset crittografati devono essere associati alle entità ContentKey.Encrypted assets have to be associated with ContentKeys. Questo articolo descrive come creare una chiave simmetrica.This article describes how to create a content key.

Nota

Quando si crea un nuovo asset StorageEncrypted mediante Media Services .NET SDK, l'entità ContentKey viene creata automaticamente e collegata all'asset.When creating a new StorageEncrypted asset using the Media Services .NET SDK , the ContentKey is automatically created and linked with the asset.

ContentKeyTypeContentKeyType

Uno dei valori che è necessario impostare quando si crea una chiave simmetrica è quello relativo al tipo.One of the values that you must set when create a content key is the content key type. È possibile scegliere uno dei seguenti valori.Choose from one of the following values.

public enum ContentKeyType
{
    /// <summary>
    /// Specifies a content key for common encryption.
    /// </summary>
    /// <remarks>This is the default value.</remarks>
    CommonEncryption = 0,

    /// <summary>
    /// Specifies a content key for storage encryption.
    /// </summary>
    StorageEncryption = 1,

    /// <summary>
    /// Specifies a content key for configuration encryption.
    /// </summary>
    ConfigurationEncryption = 2,

    /// <summary>
    /// Specifies a content key for Envelope encryption.  Only used internally.
    /// </summary>
    EnvelopeEncryption = 4
}

Creare un'entità ContentKey di tipo envelopeCreate envelope type ContentKey

Il seguente frammento di codice crea una chiave simmetrica con tipo di crittografia envelope.The following code snippet creates a content key of the envelope encryption type. Associa quindi la chiave all'asset specificato.It then associates the key with the specified asset.

static public IContentKey CreateEnvelopeTypeContentKey(IAsset asset)
{
    // Create envelope encryption content key
    Guid keyId = Guid.NewGuid();
    byte[] contentKey = GetRandomBuffer(16);

    IContentKey key = _context.ContentKeys.Create(
                            keyId,
                            contentKey,
                            "ContentKey",
                            ContentKeyType.EnvelopeEncryption);

    asset.ContentKeys.Add(key);

    return key;
}

static private byte[] GetRandomBuffer(int size)
{
    byte[] randomBytes = new byte[size];
    using (RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider())
    {
        rng.GetBytes(randomBytes);
    }

    return randomBytes;
}

chiamarecall

IContentKey key = CreateEnvelopeTypeContentKey(encryptedsset);

Creare un'entità ContentKey di tipo commonCreate common type ContentKey

Il seguente frammento di codice crea una chiave simmetrica con tipo di crittografia common.The following code snippet creates a content key of the common encryption type. Associa quindi la chiave all'asset specificato.It then associates the key with the specified asset.

static public IContentKey CreateCommonTypeContentKey(IAsset asset)
{
    // Create common encryption content key
    Guid keyId = Guid.NewGuid();
    byte[] contentKey = GetRandomBuffer(16);

    IContentKey key = _context.ContentKeys.Create(
                            keyId,
                            contentKey,
                            "ContentKey",
                            ContentKeyType.CommonEncryption);

    // Associate the key with the asset.
    asset.ContentKeys.Add(key);

    return key;
}

static private byte[] GetRandomBuffer(int length)
{
    var returnValue = new byte[length];

    using (var rng =
        new System.Security.Cryptography.RNGCryptoServiceProvider())
    {
        rng.GetBytes(returnValue);
    }

    return returnValue;
}

chiamarecall

IContentKey key = CreateCommonTypeContentKey(encryptedsset); 

Percorsi di apprendimento di Servizi multimedialiMedia Services learning paths

Altre informazioni sui percorsi di apprendimento di Servizi multimediali di Azure:Read about the Azure Media Services learning paths:

Fornire commenti e suggerimentiProvide feedback

Usare il forum di suggerimenti degli utenti per fornire commenti e suggerimenti su come migliorare Servizi multimediali di Azure.Use the User Voice forum to provide feedback and make suggestions on how to improve Azure Media Services. È anche possibile passare direttamente a una delle categorie seguenti:You also can go directly to one of the following categories: