Condividi tramite


CA5401: Non usare CreateEncryptor con iv non predefinito

Proprietà valore
ID regola CA5401
Title Non usare CreateEncryptor con il vettore di inizializzazione non predefinito
Categoria Sicurezza
La correzione causa un'interruzione o meno Non causa un'interruzione
Abilitato per impostazione predefinita in .NET 9 No

Causa

Uso di System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor con un oggetto non predefinito rgbIV.

Descrizione regola

La crittografia simmetrica deve usare sempre un vettore di inizializzazione non ripetibile per impedire attacchi a dizionario.

Questa regola è simile a CA5402, ma l'analisi determina che il vettore di inizializzazione è sicuramente l'impostazione predefinita.

Come correggere le violazioni

Usare il valore predefinito rgbIV , ovvero usare l'overload dell'oggetto System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor che non ha alcun parametro.

Quando eliminare gli avvisi

È possibile eliminare un avviso da questa regola se:

Eliminare un avviso

Se si vuole eliminare una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare la regola.

#pragma warning disable CA5401
// The code that's violating the rule is on this line.
#pragma warning restore CA5401

Per disabilitare la regola per un file, una cartella o un progetto, impostarne la gravità none su nel file di configurazione.

[*.{cs,vb}]
dotnet_diagnostic.CA5401.severity = none

Per altre informazioni, vedere Come eliminare gli avvisi di analisi del codice.

Esempi di pseudo-codice

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        aesCng.IV = rgbIV;
        aesCng.CreateEncryptor();
    }
}

Soluzione

using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod()
    {
        AesCng aesCng  = new AesCng();
        aesCng.CreateEncryptor();
    }
}