SYSLIB0007: 暗号化アルゴリズムの既定の実装はサポートされていません
.NET Framework 内の暗号構成システムは、適切な暗号アジリティに対応しません。また、.NET Core および .NET 5 以降に存在しません。 また、.NET の下位互換性の要件のため、暗号の進歩に対応してフレームワークで特定の暗号化 API を更新することもできません。 その結果、.NET 5 以降では、次の API は古い形式としてマークさています。 これらの API を使用すると、コンパイル時には警告 SYSLIB0007
が、実行時には PlatformNotSupportedException が生成されます。
- System.Security.Cryptography.AsymmetricAlgorithm.Create()
- System.Security.Cryptography.HashAlgorithm.Create()
- System.Security.Cryptography.HMAC.Create()
- System.Security.Cryptography.KeyedHashAlgorithm.Create()
- System.Security.Cryptography.SymmetricAlgorithm.Create()
回避策
推奨される対応は、現在は古くなった 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>
詳細については、「警告を表示しない」を参照してください。
関連項目
.NET