비고
이 문서는 .NET Framework에만 적용됩니다. .NET 6 이상 버전을 포함하여 .NET의 최신 구현에는 적용되지 않습니다.
개발자는 Windows SDK를 사용하여 암호화 개체를 만들 수 있는 네 가지 방법이 있습니다.
새 연산자를 사용하여 개체를 만듭니다.
해당 알고리즘의 추상 클래스에서 Create 메서드를 호출하여 특정 암호화 알고리즘을 구현하는 개체를 만듭니다.
메서드를 호출하여 특정 암호화 알고리즘을 구현하는 개체를 만듭니다 CryptoConfig.CreateFromName .
해당 알고리즘 유형(예: )에 대한 추상 클래스에서 Create 메서드를 호출하여 암호화 알고리즘 클래스(예: SymmetricAlgorithm대칭 블록 암호)를 구현하는 개체를 만듭니다.
예를 들어 개발자가 바이트 집합의 SHA1 해시를 계산하려고 하는 경우를 가정해 보겠습니다. 네임스페이스에는 System.Security.Cryptography SHA1 알고리즘의 두 가지 구현, 즉 순수하게 관리되는 구현과 CryptoAPI를 래핑하는 구현이 포함됩니다. 개발자는 SHA1Managed 연산자를 호출하여 특정 SHA1 구현(예: )을 인스턴스화하도록 선택할 수 있습니다. 그러나 클래스가 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> 요소는 클래스를 하나의 친숙한 알고리즘 이름에 매핑합니다. 이름 특성은 System.Security.Cryptography.CryptoConfig.CreateFromName 메서드를 호출할 때 사용되는 문자열이거나 네임스페이스에서 추상 암호화 클래스 System.Security.Cryptography 의 이름일 수 있습니다. 클래스 특성의 값은 cryptoClass< 요소에 있는 특성의> 이름입니다.
비고
또는 SHA1.Create 메서드를 호출 하여 SHA1 알고리즘을 가져올 수 있습니다. 각 메서드는 SHA1 알고리즘을 구현하는 개체만 반환합니다. 알고리즘의 각 친숙한 이름을 구성 파일의 동일한 클래스에 매핑할 필요가 없습니다.
기본 이름 및 매핑되는 클래스 목록은 다음을 참조하세요 CryptoConfig.
참고하십시오
.NET