SYSLIB0064: Funkce RSACryptoServiceProvider.Encrypt a Decrypt s fOAEP jsou zastaralé.

Počínaje rozhraním .NET 11 jsou metody RSACryptoServiceProvider.Encrypt(Byte[], Boolean) a RSACryptoServiceProvider.Decrypt(Byte[], Boolean) zastaralé. Volání těchto metod v kódu generuje upozornění SYSLIB0064 v době kompilace.

Důvod zastarání

fOAEP Pokud je parametr true, tyto metody vždy používají SHA-1 jako algoritmus souhrnu pro optimalizovanou asymetrickou výplň pro šifrování (OAEP). Hashovací algoritmus je implicitní a nedá se změnit. Použijte přetížení, která místo toho přijímají explicitní argument RSAEncryptionPadding. Díky těmto přetížením je hashovací algoritmus explicitní, získáte větší flexibilitu při výběru algoritmu hash a pomůže vám vyhnout se náhodnému použití OAEP-SHA-1. Pokud potřebujete OAEP, raději RSAEncryptionPadding.OaepSHA256 nebo silnější místo migrace do RSAEncryptionPadding.OaepSHA1 výchozího nastavení, pokud kvůli kompatibilitě nepotřebujete SHA-1.

Alternativní řešení

Nahraďte volání zastaralých přetížení odpovídajícími přetíženími, která přijímají RSAEncryptionPadding argument.

Zastaralé volání Náhrada
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)

Potlačte upozornění

Pokud musíte použít zastaralé rozhraní API, můžete potlačit upozornění v kódu nebo v souboru projektu.

Chcete-li potlačit pouze jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, které chcete zakázat a znovu povolit upozornění.

// Disable the warning.
#pragma warning disable SYSLIB0064

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

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

Pokud chcete potlačit všechna SYSLIB0064 upozornění ve vašem projektu, přidejte do souboru projektu vlastnost <NoWarn>.

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

Další informace naleznete v tématu Potlačení upozornění.