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

Это - действительно метод в UITableViewDelegate:

- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath

Теперь я получаю строку зеленых знаков "плюс"!

7
задан Chris Marisic 18 August 2009 в 14:02
поделиться

3 ответа

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

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

Существует простой способ обхода данного ПК. Перейдите в раздел реестра HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Cryptography \ Defaults \ Provider , найдите его подраздел с именем «Microsoft Enhanced RSA и AES Cryptographic Provider (Prototype)», экспортируйте его в .reg, отредактируйте .reg и удалите "(Prototype)" из его имени. Когда вы импортируете его обратно, исходный ключ будет дублирован на новый ключ без (Прототип) с тем же содержимым. С этого момента SHA256CryptoServiceProvider будет работать на этой машине XPSP3.

13
ответ дан 6 December 2019 в 14:06
поделиться

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

2
ответ дан 6 December 2019 в 14:06
поделиться

Из MSDN: SHA256CryptoServiceProvider Class

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

0
ответ дан 6 December 2019 в 14:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: