SYSLIB0007. Реализация алгоритмов шифрования по умолчанию не поддерживается

Система конфигурации шифрования, представленная в .NET Framework, больше не используется в .NET Core и .NET 5 и более поздних версий, поскольку она не позволяет обеспечить необходимую гибкость шифрования. Требования к обратной совместимости .NET также не позволяют платформе обновлять определенные API шифрования, чтобы обеспечить поддержку улучшений технологий шифрования. В связи с этим следующие API помечены как устаревшие, начиная с версии .NET 5. При использовании этих API создаются предупреждение SYSLIB0007 во время компиляции и исключение PlatformNotSupportedException во время выполнения.

Методы обхода проблемы

  • Рекомендуется заменить вызовы к устаревшим API вызовами методов фабрики для конкретных алгоритмов, например Aes.Create(). Таким образом, вы будете полностью контролировать алгоритмы, для которых создаются экземпляры.

  • Если необходимо обеспечить совместимость с существующими полезными данными, создаваемыми приложениями .NET Framework, которые используют устаревшие API, используйте предложенные в следующей таблице альтернативные варианты. В этой таблице приводится сопоставление алгоритмов .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>

Дополнительные сведения см. в разделе Отключение предупреждений.

См. также