Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
A partire da .NET 11, i RSACryptoServiceProvider.Encrypt(Byte[], Boolean) metodi e RSACryptoServiceProvider.Decrypt(Byte[], Boolean) sono obsoleti. La chiamata di questi metodi nel codice genera un avviso SYSLIB0064 in fase di compilazione.
Motivo dell'obsoletione
Quando il fOAEP parametro è true, questi metodi usano sempre SHA-1 come algoritmo digest per il riempimento OAEP (Optimal Asymmetric Encryption Padding). L'algoritmo hash è implicito e non può essere modificato. Usare invece overload che accettano un argomento esplicito RSAEncryptionPadding. Questi overload rendono esplicito l'algoritmo hash, offrono maggiore flessibilità quando si sceglie un algoritmo hash e consentono di evitare l'uso accidentale di OAEP-SHA-1. Quando è necessario OAEP, preferire RSAEncryptionPadding.OaepSHA256 o più forte anziché eseguire la migrazione a RSAEncryptionPadding.OaepSHA1 per impostazione predefinita, a meno che non sia necessario SHA-1 per la compatibilità.
Soluzione
Sostituire le chiamate agli overload obsoleti con i corrispondenti overload che accettano l'argomento RSAEncryptionPadding.
| Chiamata obsoleta | Sostituzione |
|---|---|
Encrypt(data, fOAEP: true) |
Encrypt(data, RSAEncryptionPadding.OaepSHA1) |
Encrypt(data, fOAEP: false) |
Encrypt(data, RSAEncryptionPadding.Pkcs1) |
Decrypt(data, fOAEP: true) |
Decrypt(data, RSAEncryptionPadding.OaepSHA1) |
Decrypt(data, fOAEP: false) |
Decrypt(data, RSAEncryptionPadding.Pkcs1) |
Eliminare un avviso
Se è necessario usare l'API obsoleta, è 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 SYSLIB0064
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0064
Per eliminare tutti gli avvisi di SYSLIB0064 nel progetto, aggiungere una proprietà <NoWarn> al file di progetto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0064</NoWarn>
</PropertyGroup>
</Project>
Per ulteriori informazioni, vedere Sopprimere gli avvisi.