다음을 통해 공유


SYSLIB0007: 암호화 알고리즘의 기본 구현이 지원되지 않음

.NET Framework의 암호화 구성 시스템은 적절한 암호화 민첩성을 허용하지 않으며 .NET Core 및 .NET 5+에 존재하지 않습니다. .NET의 이전 버전과의 호환성 요구 사항은 또한 프레임워크가 암호화의 발전을 따라 잡기 위해 특정 암호화 API를 업데이트하는 것을 금지합니다. 따라서 다음 API는 .NET 5부터 사용되지 않는 것으로 표시됩니다. 이러한 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>

자세한 내용은 경고 표시 안 함을 참조하세요.

참고 항목