SYSLIB0064: RSACryptoServiceProvider.Encrypt en Ontsleutelen met fOAEP zijn verouderd

Vanaf .NET 11 zijn de RSACryptoServiceProvider.Encrypt(Byte[], Boolean) en RSACryptoServiceProvider.Decrypt(Byte[], Boolean) methoden verouderd. Als u deze methoden aanroept in code, wordt er een waarschuwing SYSLIB0064 gegenereerd tijdens het compileren.

Reden voor afschaffing

Wanneer de parameter fOAEPtrue is, maken deze methoden altijd gebruik van SHA-1 als samenvattingsalgoritme voor Optimal Asymmetric Encryption Padding (OAEP). Het hash-algoritme is impliciet en kan niet worden gewijzigd. Gebruik in plaats daarvan overloads die een expliciet RSAEncryptionPadding argument accepteren. Deze overbelastingen maken het hash-algoritme expliciet, bieden u meer flexibiliteit wanneer u een hash-algoritme kiest en helpt u onbedoeld gebruik van OAEP-SHA-1 te voorkomen. Wanneer u OAEP nodig hebt, geeft u de voorkeur aan RSAEncryptionPadding.OaepSHA256 of een sterker alternatief in plaats van standaard naar RSAEncryptionPadding.OaepSHA1 te migreren, tenzij u SHA-1 nodig hebt voor compatibiliteit.

Workaround

Vervang aanroepen naar verouderde overbelastingen door de bijbehorende overbelastingen die een RSAEncryptionPadding argument accepteren:

Verouderde aanroep Vervanging
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)

Een waarschuwing onderdrukken

Als u de verouderde API moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

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

// Disable the warning.
#pragma warning disable SYSLIB0064

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

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

Als u alle SYSLIB0064 waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn> eigenschap toe aan het projectbestand.

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

Zie Waarschuwingen onderdrukkenvoor meer informatie.