Переопределить по умолчанию HashAlgorithm.Create () - PullRequest
2 голосов
/ 01 апреля 2020

Я пытался переопределить значение по умолчанию от SHA1 до SHA256 того, что возвращает System.Security.Cryptography.HashAlgorithm.Create(). Основанный на документах , предполагается, что он может быть переопределен.

Я натолкнулся на эту статью , но, похоже, упоминается только отображение пользовательского ха * 1018. * алгоритм переопределения одного из существующих. Я хочу просто изменить значение по умолчанию SHA1 на значение по умолчанию SHA256.

Возможно ли это с помощью статьи выше?

Что-то вроде этого?

<configuration>  
   <mscorlib>  
      <cryptographySettings>  
         <cryptoNameMapping>    
            <nameEntry name="System.Security.Cryptography.HashAlgorithm"  
                       class="System.Security.Cryptography.SHA256"/>  
         </cryptoNameMapping>  
      </cryptographySettings>  
   </mscorlib>  
</configuration>

Ответы [ 2 ]

2 голосов
/ 01 апреля 2020

Недостаток изменения machine.config заключается в том, что он влияет на все приложения, которые будут использовать System.Security.Cryptography.HashAlgorithm.

. Другой подход заключается в использовании класса CryptoConfig. Следующий фрагмент кода регистрирует SHA256Managed в качестве алгоритма ha sh по умолчанию:

using System.Security.Cryptography;

...

CryptoConfig.AddAlgorithm(
    typeof(SHA256Managed),
    "System.Security.Cryptography.HashAlgorithm");

Изменяет алгоритм ha sh по умолчанию только для текущего приложения.

Примечание что должна использоваться конкретная реализация SHA256Managed абстрактного класса SHA256.

2 голосов
/ 01 апреля 2020

Да , это возможно.

Если вам нужно применять новый алгоритм ha sh по умолчанию при каждом запуске. NET Приложение Framework на машине просто напишите этот раздел внутри machine.config file:

<mscorlib>  
    <cryptographySettings>  
        <cryptoNameMapping>  
            <cryptoClasses>  
                <cryptoClass DefaultHashAlgorithm="System.Security.Cryptography.SHA256Managed, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>  
            </cryptoClasses>
            <nameEntry name="System.Security.Cryptography.HashAlgorithm"  
                    class="DefaultHashAlgorithm"/>  
        </cryptoNameMapping>  
    </cryptographySettings>  
</mscorlib>  

Обратите внимание, что файл machine.config размещен здесь:

x32 :

%windir%\Microsoft.NET\Framework\[version]\config\machine.config

x64 :

%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

Также вы можете изменить алгоритм по умолчанию для каждого встроенного алгоритма ha sh, изменив атрибут DefaultHashAlgorithm. См. Список алгоритмов здесь .

...