Share via


CA5401: Använd inte CreateEncryptor med icke-standard IV

Property Värde
Regel-ID CA5401
Rubrik Använd inte CreateEncryptor med icke-standard-IV
Kategori Säkerhet
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Nej

Orsak

Använda System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor med icke-standard rgbIV.

Regelbeskrivning

Symmetrisk kryptering bör alltid använda en icke-repeterbar initieringsvektor för att förhindra ordlisteattacker.

Den här regeln liknar CA5402, men analysen bestämmer att initieringsvektorn definitivt är standard.

Så här åtgärdar du överträdelser

Använd standardvärdet rgbIV , d.v.s. använd överlagringen av som System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor inte har någon parameter.

När du ska ignorera varningar

Det är säkert att ignorera en varning från den här regeln om:

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Exempel på pseudokod

using System.Security.Cryptography;

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

Lösning

using System.Security.Cryptography;

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