Freigeben über


SYSLIB0064: RSACryptoServiceProvider.Encrypt und Decrypt mit dem Parameter fOAEP sind veraltet

Ab .NET 11 sind die Methoden RSACryptoServiceProvider.Encrypt(Byte[], Boolean) und RSACryptoServiceProvider.Decrypt(Byte[], Boolean) veraltet. Beim Aufrufen dieser Methoden im Code wird zur Kompilierzeit eine Warnung SYSLIB0064 generiert.

Grund für die Obsoleszenz

Wenn der fOAEP Parameter lautet true, verwenden diese Methoden immer SHA-1 als Digestalgorithmus für optimalen asymmetrischen Verschlüsselungsabstand (OAEP). Der Hashalgorithmus ist implizit und kann nicht geändert werden. Verwenden Sie stattdessen Überladungen, die ein explizites RSAEncryptionPadding Argument annehmen. Diese Überladungen machen den Hashalgorithmus explizit, bieten Ihnen mehr Flexibilität, wenn Sie einen Hashalgorithmus auswählen, und helfen Ihnen, die versehentliche Verwendung von OAEP-SHA-1 zu vermeiden. Wenn Sie OAEP benötigen, bevorzugen Sie RSAEncryptionPadding.OaepSHA256 oder eine stärkere Option, anstatt standardmäßig zu RSAEncryptionPadding.OaepSHA1 zu migrieren, es sei denn, Sie benötigen SHA-1 aus Gründen der Kompatibilität.

Workaround

Ersetzen Sie Aufrufe der veralteten Überladungen durch die entsprechenden Überladungen, die ein RSAEncryptionPadding Argument akzeptieren:

Veralteter Anruf Ersetzung
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)

Unterdrücken einer Warnung

Wenn Sie die veraltete API verwenden müssen, können Sie die Warnung im Code oder in der Projektdatei unterdrücken.

Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Warnung zu deaktivieren und dann wieder zu aktivieren.

// Disable the warning.
#pragma warning disable SYSLIB0064

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

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

Um alle SYSLIB0064-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>-Eigenschaft hinzu.

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

Weitere Informationen finden Sie unter Unterdrücken von Warnungen.