다음을 통해 공유


SYSLIB0064: RSACryptoServiceProvider.Encrypt 및 Decrypt(fOAEP 사용)은 더 이상 지원되지 않습니다.

.NET 11부터는 RSACryptoServiceProvider.Encrypt(Byte[], Boolean) 메서드와 RSACryptoServiceProvider.Decrypt(Byte[], Boolean) 메서드가 더 이상 사용되지 않습니다. 코드에서 이러한 메서드를 호출하면 컴파일 시 경고 SYSLIB0064 가 생성됩니다.

사용되지 않는 이유

fOAEP 매개 변수인 경우 이러한 메서드는 true항상 SHA-1을 OAEP(최적 비대칭 암호화 패딩)에 대한 다이제스트 알고리즘으로 사용합니다. 해시 알고리즘은 암시적이므로 변경할 수 없습니다. 대신 명시적 RSAEncryptionPadding 인수를 허용하는 오버로드를 사용합니다. 이러한 오버로드는 해시 알고리즘을 명시적으로 만들고, 해시 알고리즘을 선택할 때 더 많은 유연성을 제공하며, 실수로 OAEP-SHA-1을 사용하지 않도록 도와줍니다. OAEP가 필요할 때는 호환성을 위해 SHA-1이 필요하지 않은 한 기본적으로 RSAEncryptionPadding.OaepSHA1로 마이그레이션하는 대신 RSAEncryptionPadding.OaepSHA256나 더 강력한 것을 선호하세요.

Workaround

사용되지 않거나 더 이상 사용되지 않는 오버로드의 호출을 RSAEncryptionPadding 인수를 허용하는 해당 오버로드로 대체합니다.

사용되지 않는 호출 Replacement
Encrypt(data, fOAEP: true) Encrypt(data, RSAEncryptionPadding.OaepSHA1)
Encrypt(data, fOAEP: false) Encrypt(data, RSAEncryptionPadding.Pkcs1)
Decrypt(data, fOAEP: true) Decrypt(data, RSAEncryptionPadding.OaepSHA1)
Decrypt(data, fOAEP: false) Decrypt(data, RSAEncryptionPadding.Pkcs1)

경고 표시 안 함

사용되지 않는 API를 사용해야 하는 경우 코드 또는 프로젝트 파일에서 경고를 표시하지 않을 수 있습니다.

단일 위반만 표시하지 않으려면 소스 파일에 전처리기 지시문을 추가하여 경고를 사용하지 않도록 설정한 다음 다시 사용하도록 설정합니다.

// Disable the warning.
#pragma warning disable SYSLIB0064

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

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

프로젝트의 모든 SYSLIB0064 경고를 억제하려면, 프로젝트 파일에 <NoWarn> 속성을 추가하세요.

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

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