Share via


CA5402: Använd CreateEncryptor med standard-IV

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

Orsak

rgbIV Kan vara icke-standard när du använder System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor.

Regelbeskrivning

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

Den här regeln liknar CA5401, men analysen kan inte avgöra att initieringsvektorn definitivt är standard.

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

Använd standardvärdet rgbIV explicit, 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 CA5402
// The code that's violating the rule is on this line.
#pragma warning restore CA5402

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.CA5402.severity = none

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

Exempel på pseudokod

using System;
using System.Security.Cryptography;

class ExampleClass
{
    public void ExampleMethod(byte[] rgbIV)
    {
        AesCng aesCng  = new AesCng();
        Random r = new Random();

        if (r.Next(6) == 4)
        {
            aesCng.IV = rgbIV;
        }

        aesCng.CreateEncryptor();
    }
}

Lösning

using System.Security.Cryptography;

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