英語で読む

次の方法で共有


SYSLIB0007: 暗号化アルゴリズムの既定の実装はサポートされていません

.NET Framework 内の暗号構成システムは、適切な暗号アジリティに対応しません。また、.NET Core および .NET 5 以降に存在しません。 また、.NET の下位互換性の要件のため、暗号の進歩に対応してフレームワークで特定の暗号化 API を更新することもできません。 その結果、.NET 5 以降では、次の API は古い形式としてマークさています。 これらの API を使用すると、コンパイル時には警告 SYSLIB0007 が、実行時には PlatformNotSupportedException が生成されます。

回避策

  • 推奨される対応は、現在は古くなった API の呼び出しを、特定のアルゴリズム用のファクトリ メソッド (Aes.Create() など) の呼び出しに置き換えることです。 これにより、インスタンス化されるアルゴリズムを完全に制御できます。

  • 古くなった API を使用している .NET Framework アプリによって生成された既存のペイロードとの互換性を維持する必要がある場合は、次の表で推奨されている代わりのものを使用します。 次の表は、.NET Framework の既定のアルゴリズムから .NET 5 以降の同等のアルゴリズムへのマッピングを示したものです。

    .NET Framework .NET Core および .NET 5 以降で互換性のある代替機能 注釈
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() SHA-1 アルゴリズムは、破られたものと見なされています。 可能であれば、より強力なアルゴリズムを使用することを検討してください。 詳細については、セキュリティ アドバイザーに相談してください。
    HMAC.Create() HMACSHA1() ほとんどの最新のアプリケーションに対しては、HMACSHA1 アルゴリズムは推奨されません。 可能であれば、より強力なアルゴリズムを使用することを検討してください。 詳細については、セキュリティ アドバイザーに相談してください。
    KeyedHashAlgorithm.Create() HMACSHA1() ほとんどの最新のアプリケーションに対しては、HMACSHA1 アルゴリズムは推奨されません。 可能であれば、より強力なアルゴリズムを使用することを検討してください。 詳細については、セキュリティ アドバイザーに相談してください。
    SymmetricAlgorithm.Create() Aes.Create()

警告を抑制する

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

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

// Disable the warning.
#pragma warning disable SYSLIB0007

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

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

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

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

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

関連項目