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

Egenskap Värde
Regel-ID CA5401
Title Använd inte CreateEncryptor med icke-standard-IV
Kategori Säkerhet
Korrigeringen är antingen invasiv eller icke-invasiv Oumbrytbar
Aktiverad som standard i .NET 10 Nej
Tillämpliga språk C# och Visual Basic

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, det vill säga använd den överlagring av System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor som 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();
    }
}