首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖默认的HashAlgorithm.Create()

覆盖默认的HashAlgorithm.Create()
EN

Stack Overflow用户
提问于 2020-04-01 01:17:44
回答 2查看 373关注 0票数 2

我一直试图覆盖默认值从SHA1SHA256System.Security.Cryptography.HashAlgorithm.Create()返回的内容。基于文档,它应该是可重写的。

我遇到了这个文章,但它似乎只提到映射一个自定义哈希算法来覆盖现有的一个哈希算法。我只想将SHA1的默认值重写为默认的SHA256

用上面的文章可以吗?

像这样吗?

代码语言:javascript
复制
<configuration>  
   <mscorlib>  
      <cryptographySettings>  
         <cryptoNameMapping>    
            <nameEntry name="System.Security.Cryptography.HashAlgorithm"  
                       class="System.Security.Cryptography.SHA256"/>  
         </cryptoNameMapping>  
      </cryptographySettings>  
   </mscorlib>  
</configuration>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-04-01 11:19:08

是的,,有可能。

如果需要在机器上运行的每个.NET框架应用程序中应用新的默认哈希算法,只需在machine.config文件中写入本节:

代码语言:javascript
复制
<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

代码语言:javascript
复制
%windir%\Microsoft.NET\Framework\[version]\config\machine.config

x64

代码语言:javascript
复制
%windir%\Microsoft.NET\Framework64\[version]\config\machine.config 

此外,您还可以通过更改DefaultHashAlgorithm属性来更改每个内置哈希算法的默认算法。参见算法列表这里

票数 2
EN

Stack Overflow用户

发布于 2020-04-01 11:33:28

更改machine.config的缺点是它会影响所有使用System.Security.Cryptography.HashAlgorithm的应用程序。

另一种方法是使用CryptoConfig类。下一个代码段将SHA256Managed注册为默认哈希算法:

代码语言:javascript
复制
using System.Security.Cryptography;

...

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

这仅更改当前应用程序的默认哈希算法。

注意到,必须使用抽象类SHA256的具体实现SHA256Managed

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60962252

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档