Share via


CA5402: CreateEncryptor gebruiken met de standaard IV

Eigenschappen Weergegeven als
Regel-id CA5402
Titel CreateEncryptor gebruiken met de standaard IV
Categorie Beveiliging
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Nee

Oorzaak

De rgbIV waarde kan niet standaard zijn als u deze gebruikt System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor.

Beschrijving van regel

Symmetrische versleuteling moet altijd een niet-herhaalbare initialisatievector gebruiken om woordenlijstaanvallen te voorkomen.

Deze regel is vergelijkbaar met CA5401, maar analyse kan niet bepalen dat de initialisatievector absoluut de standaardwaarde is.

Schendingen oplossen

Gebruik de standaardwaarde rgbIV expliciet, dat wil gezegd, gebruik de overbelasting van de System.Security.Cryptography.SymmetricAlgorithm.CreateEncryptor waarde die geen parameter heeft.

Wanneer waarschuwingen onderdrukken

Het is veilig om een waarschuwing van deze regel te onderdrukken als:

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Voorbeelden van pseudocode

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();
    }
}

Oplossing

using System.Security.Cryptography;

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