SHA256CryptoServiceProvider и связанный с возможным использование на Winxp?

StackOverflow https://stackoverflow.com/questions/1293905

Вопрос

Можно ли использовать SHA256CryptoServiceProvider и связанных с ними провайдеров SHA2 в Windows XP? Я знаю, что поставщики используют криптографические услуги, которые включены в Vista, и выше возможно ли установить эти услуги в XP из Microsoft?

РЕДАКТИРОВАТЬ: Я должен был предоставить больше информации, документация по MSDN неверна в отношении того, что это поддерживается в Windows XP. Видеть http://connect.microsoft.com/visualstudio/feedback/viewfeedback.aspx?feedbackid=355031 где это признано и принято Microsoft как дизайн. Тем не менее, где -либо, где я видел, я видел, что я видел), поэтому я не был уверен, можно ли установить услуги, которые необходимы для правильной работы, или это как наклонение на Windwills, пытаясь установить IIS 6 или 7 на WinXP.

Это было полезно?

Решение

Кажется, что документация MSDN правильная в том смысле, что она должен поддерживаться в XP SP3 по дизайну, а если это не так, это только из -за ошибка в .net 3.5.

Как AescryptoServiceProvider, так и SHA256CryptoServiceProvider используют одну и ту же услугу криптографии под названием «Microsoft Enhanced RSA и криптографический провайдер AES». Под XP название сервиса немного отличается: «Microsoft Enhanced RSA и AES Cryptographic Provider (Prototype)». Анкет Конструктор 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. Если бы они это сделали, они преуспели бы.

На данном ПК есть простой обходной путь. Перейти к ключе реестра Hkey_local_machine Software Microsoft Cryptography defaults Provider, Найдите свой подразделение под названием «Microsoft Enhanced RSA и криптографический провайдер AES (прототип)», экспортировать его в .reg, редактировать этот .RER и удалить »(прототип)» с его названия. Когда вы импортируете его обратно, исходный ключ будет дублироваться в новый ключ без (прототип) с тем же содержимым. С этого момента SHA256CryptoServiceProvider будет работать на этой машине XPSP3.

Другие советы

Я добился успеха со следующим фрагментом, хотя я не очень доволен этим и почти опубликовал такой вопрос, касающийся различных, казалось бы, случайных способов экземпляра 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 Class

Платформы: Windows Vista, Windows XP SP2, Windows Server 2003

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top