SYSLIB0007:不支援密碼編譯演算法的預設實作

.NET Framework 中的密碼編譯設定系統不允許適當的密碼編譯靈活性,而且不會出現在 .NET Core 和 .NET 5+ 中。 .NET 的回溯相容性需求也使得架構無法更新特定密碼編譯 API,以跟上密碼編譯的演進。 因此,從 .NET 5 開始,下列 API 會標示為已淘汰。 使用這些 API 會在編譯時期產生警告 SYSLIB0007,並且在執行階段產生警告 PlatformNotSupportedException

因應措施

  • 建議的動作是,以特定演算法的 Factory 方法呼叫,取代已淘汰 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>

如需詳細資訊,請參閱隱藏警告

另請參閱