次の方法で共有


SYSLIB0064: RSACryptoServiceProviderのEncryptおよびDecryptメソッド(fOAEPを使用)は廃止されました。

.NET 11 以降では、 RSACryptoServiceProvider.Encrypt(Byte[], Boolean) メソッドと RSACryptoServiceProvider.Decrypt(Byte[], Boolean) メソッドは廃止されました。 コードでこれらのメソッドを呼び出すと、コンパイル時に警告 SYSLIB0064 が生成されます。

廃止の理由

fOAEP パラメーターがtrueされている場合、これらのメソッドは常に、最適な非対称暗号化パディング (OAEP) のダイジェスト アルゴリズムとして SHA-1 を使用します。 ハッシュ アルゴリズムは暗黙的であり、変更することはできません。 代わりに、明示的な RSAEncryptionPadding 引数を受け入れるオーバーロードを使用します。 これらのオーバーロードにより、ハッシュ アルゴリズムが明示的になり、ハッシュ アルゴリズムを選択する際の柔軟性が向上し、OAEP-SHA-1 の誤った使用を回避するのに役立ちます。 OAEP が必要な場合は、互換性のために SHA-1 が必要な場合を除き、既定でRSAEncryptionPadding.OaepSHA256に移行する代わりに、RSAEncryptionPadding.OaepSHA1以上を優先します。

対処法

古いオーバーロードの呼び出しを、 RSAEncryptionPadding 引数を受け入れる対応するオーバーロードに置き換えます。

古い呼び出し Replacement
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)

警告を抑制する

古い API を使用する必要がある場合は、コードまたはプロジェクト ファイルで警告を抑制できます。

単一の違反だけを抑制するには、ソース ファイルにプリプロセッサ ディレクティブを追加して警告を無効にしてから、再度有効にします。

// Disable the warning.
#pragma warning disable SYSLIB0064

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

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

プロジェクトですべての SYSLIB0064 警告を抑制するには、プロジェクト ファイルに <NoWarn> プロパティを追加します。

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

詳細については、「警告を表示しない」を参照してください。