SHA256CryptoServiceProvider и связанный с возможным использование на Winxp?
-
18-09-2019 - |
Вопрос
Можно ли использовать 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