알고리즘 이름을 암호화 클래스에 매핑
참고 항목
이 문서는 .NET Framework와 관련이 있습니다. .NET 6 이상 버전을 비롯하여 .NET의 최신 구현에는 적용되지 않습니다.
개발자가 Windows SDK를 사용하여 암호화 개체를 만들 수 있는 네 가지 방법이 있습니다.
new 연산자를 사용하여 개체를 만듭니다.
해당 알고리즘에 대한 추상 클래스에서 Create 메서드를 호출하여 특정 암호화 알고리즘을 구현하는 개체를 만듭니다.
CryptoConfig.CreateFromName 메서드를 호출하여 특정 암호화 알고리즘을 구현하는 개체를 만듭니다.
해당 알고리즘 유형(예: SymmetricAlgorithm)에 대한 추상 클래스에서 Create 메서드를 호출하여 암호화 알고리즘 클래스(예: 대칭 블록 암호화)를 구현하는 개체를 만듭니다.
예를 들어 개발자가 바이트 세트의 SHA1 해시를 계산하려고 하는 경우를 가정해 보겠습니다. System.Security.Cryptography 네임스페이스에는 SHA1 알고리즘의 두 가지 구현, 즉 순수하게 관리되는 구현과 CryptoAPI를 래핑하는 구현이 포함되어 있습니다. 개발자는 new 연산자를 호출하여 특정 SHA1 구현(예: SHA1Managed)을 인스턴스화하도록 선택할 수 있습니다. 그러나 클래스가 SHA1 해시 알고리즘을 구현하는 한 공용 언어 런타임이 로드하는 클래스가 중요하지 않은 경우 개발자는 SHA1.Create 메서드를 호출하여 개체를 만들 수 있습니다. 이 메서드는 SHA1 해시 알고리즘의 구현을 반환해야 하는 System.Security.Cryptography.CryptoConfig.CreateFromName("System.Security.Cryptography.SHA1")을 호출합니다.
기본적으로 암호화 구성에는 .NET Framework에서 제공된 알고리즘에 대한 짧은 이름이 포함되어 있기 때문에 개발자는 System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1")을 호출할 수도 있습니다.
사용되는 해시 알고리즘이 중요하지 않은 경우 개발자는 해싱 변환을 구현하는 개체를 반환하는 HashAlgorithm.Create 메서드를 호출할 수 있습니다.
구성 파일에서 알고리즘 이름 매핑
기본적으로 런타임은 모든 네 가지 시나리오에 대해 SHA1CryptoServiceProvider 개체를 반환합니다. 그러나 컴퓨터 관리자는 마지막 두 시나리오의 메서드가 반환하는 개체의 형식을 변경할 수 있습니다. 이렇게 하려면 알고리즘 식별 이름을 컴퓨터 구성 파일(Machine.config)에서 사용하려는 클래스에 매핑해야 합니다.
다음 예제에서는 System.Security.Cryptography.SHA1.Create, System.Security.CryptoConfig.CreateFromName("SHA1") 및 System.Security.Cryptography.HashAlgorithm.Create가 MySHA1HashClass
개체를 반환하도록 런타임을 구성하는 방법을 보여 줍니다.
<configuration>
<!-- Other configuration settings. -->
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass MySHA1Hash="MySHA1HashClass, MyAssembly
Culture='en', PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0"/>
</cryptoClasses>
<nameEntry name="SHA1" class="MySHA1Hash"/>
<nameEntry name="System.Security.Cryptography.SHA1"
class="MySHA1Hash"/>
<nameEntry name="System.Security.Cryptography.HashAlgorithm"
class="MySHA1Hash"/>
</cryptoNameMapping>
</cryptographySettings>
</mscorlib>
</configuration>
특성의 이름을 <cryptoClass> 요소에 지정할 수 있습니다. 앞의 예제에서는 특성을 MySHA1Hash
라고 명명했습니다. <cryptoClass> 요소의 특성 값은 공용 언어 런타임에서 클래스를 찾기 위해 사용하는 문자열입니다. 정규화된 형식 이름 지정에 지정된 요구 사항을 충족하는 문자열을 사용할 수 있습니다.
많은 알고리즘 이름이 동일한 클래스에 매핑될 수 있습니다. <nameEntry> 요소는 클래스에 한 개의 알고리즘 식별 이름을 매핑합니다. name 특성은 System.Security.Cryptography.CryptoConfig.CreateFromName 메서드를 호출할 때 사용되는 문자열이거나 System.Security.Cryptography 네임스페이스에서 추상 암호화 클래스의 이름일 수 있습니다. class 특성의 값은 <cryptoClass> 요소의 특성 이름입니다.
참고 항목
SHA1.Create 또는 Security.CryptoConfig.CreateFromName("SHA1") 메서드를 호출하여 SHA1 알고리즘을 가져올 수 있습니다. 각 메서드는 SHA1 알고리즘을 구현하는 개체를 반환한다는 것만 보장합니다. 알고리즘의 각 식별 이름을 구성 파일의 동일한 클래스에 매핑할 필요가 없습니다.
기본 이름 및 매핑되는 클래스 목록은 CryptoConfig를 참조하세요.
참고 항목
.NET