Condividi tramite


SYSLIB0041: Alcuni costruttori Rfc2898DeriveBytes sono obsoleti

I costruttori Rfc2898DeriveBytes seguenti sono obsoleti, a partire da .NET 7. Il loro uso nel codice genera un avviso SYSLIB0041 in fase di compilazione.

Questi overload rendono predefinito l'algoritmo hash o il numero di iterazioni e le impostazioni predefinite non sono più considerate sicure. Questi sono tutti i costruttori disponibili in .NET 4.7.1 e versioni precedenti. In futuro, è consigliabile usare solo i costruttori più recenti.

Soluzione alternativa

Usare un overload del costruttore diverso in cui sia possibile specificare in modo esplicito il numero di iterazioni (il valore predefinito è 1000) e il nome dell'algoritmo hash (il valore predefinito è HashAlgorithmName.SHA1).

Se si usa il numero di iterazioni predefinito o l'algoritmo hash predefinito, è consigliabile passare a valori più sicuri, ovvero un numero di iterazioni più elevato o un algoritmo hash più recente.

Eliminare un avviso

Se è necessario usare le API obsolete, è possibile eliminare l'avviso nel codice o nel file di progetto.

Per eliminare solo una singola violazione, aggiungere direttive del preprocessore al file di origine per disabilitare e quindi riabilitare l'avviso.

// Disable the warning.
#pragma warning disable SYSLIB0041

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0041

Per eliminare tutti gli avvisi SYSLIB0041 nel progetto, aggiungere una proprietà <NoWarn> al file di progetto.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
  </PropertyGroup>
</Project>

Per altre informazioni, vedere Non visualizzare gli avvisi.