SHA256CryptoserviceProvider 및 WinXP에서 사용할 수 있습니까?
-
18-09-2019 - |
문제
Windows XP에서 SHA256CryptoserviceProvider 및 관련 SHA2 제공 업체를 사용할 수 있습니까? 제공 업체는 Vista에 포함 된 암호화 서비스를 사용하고 있으며 위의 Microsoft에서 XP에 이러한 서비스를 설치할 수 있습니까?
편집하다: Windows XP에서 지원되는 것과 관련하여 MSDN에 대한 문서가 잘못되었습니다. 보다 http://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=355031 이것은 마이크로 소프트가 디자인으로 인정되고 받아 들여집니다. 그러나 어디에서나 나열된 작업이 없으므로 (내가 본) 서비스를 설치할 수 있는지 확신하지 못했거나 WinXP에 IIS 6 또는 7을 설치하려고하는 Windwills에서 기울어지는 것과 같은 경우 서비스를 설치할 수 있는지 확신하지 못했습니다.
해결책
MSDN 문서화가 옳은 것 같습니다. ~해야 한다 XP SP3에서 설계별로 지원되며 그렇지 않은 경우 벌레 .NET 3.5에서.
Aescryptoserviceprovider와 SHA256CryptoserviceProvider는 "Microsoft Enhanced RSA 및 AES 암호화 제공 업체"라는 동일한 Cryptograhics 서비스를 사용합니다. XP에서 서비스 이름은 약간 다릅니다. "Microsoft 강화 RSA 및 AES 암호화 제공 업체 (프로토 타입)". Aescryptoserviceprovider의 생성자는 간단한 점검을 수행합니다.
string providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider";
if(Environment.OSVersion.Version.Major == 5 && Environment.OSVersion.Version.Minor == 1)
{
providerName = "Microsoft Enhanced RSA and AES Cryptographic Provider (Prototype)";
}
shaxxxcryptoserviceprovider 클래스의 생성자가 있습니다 ~ 아니다 (프로토 타입) 이름을 확인하면 XP에서 실패한 이유입니다. 그들이 그렇게한다면, 그들은 성공할 것입니다.
주어진 PC에는 간단한 해결 방법이 있습니다. 레지스트리 키로 이동하십시오 hkey_local_machine 소프트웨어 microsoft cryptography defaults 제공자, "Microsoft Enhanced RSA 및 AES Cryptographic Provider (프로토 타입)"라는 서브 키를 찾아 .reg로 내보내고 이름에서 this .reg 및 delete "(프로토 타입)"을 내보내십시오. 다시 가져 오면 원래 키는 동일한 내용을 갖는 (프로토 타입)없이 새 키로 복제됩니다. 이제부터 SHA256CryptoserviceProvider는이 XPSP3 시스템에서 작동합니다.
다른 팁
나는 다음 스 니펫으로 성공했지만, 나는 그것에 만족하지 않고 인스턴스화하는 다양한 겉보기 우연한 방법에 관한 So 질문을 거의 게시했습니다. SHA512
당시. 이것은 Windows XP, 7 및 아마도 Vista (기억할 수 없음)에서 테스트됩니다.
using System.Security.Cryptography;
SHA512 hash;
try
{
hash = new SHA512Cng( );
}
catch ( PlatformNotSupportedException )
{
hash = SHA512.Create( );
}
나는 이것이 동일하게 작동해야한다고 생각합니다 SHA256
.
또한 두 버전의 출력을 UNIX SHA2 유틸리티와 비교하면 SHA512를 올바르게 구현할 수 있습니다.
MSDN : SHA256CryptoserviceProvider 클래스
플랫폼 : Windows Vista, Windows XP SP2, Windows Server 2003