加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – ObjectDisposedException使用MD5 ComputeHash时

发布时间:2020-12-15 04:20:05 所属栏目:百科 来源:网络整理
导读:我收到ObjectDisposedException:安全句柄已关闭. 这是我的代码: 我正在尝试创建一个接口并实现类,这将使我能够获取一个字符串,附加一个已知的密钥,为此字符串和密钥计算MD5哈希,并返回计算的哈希: public interface ISignService{ string GetSignature(st
我收到ObjectDisposedException:安全句柄已关闭.

这是我的代码:

我正在尝试创建一个接口并实现类,这将使我能够获取一个字符串,附加一个已知的密钥,为此字符串和密钥计算MD5哈希,并返回计算的哈希:

public interface ISignService
{
    string GetSignature(string str);
}

public class SignService : ISignService
{
    private readonly ISignSettings _signSettings;
    private readonly HashAlgorithm _hashAlgo;


    public SignService(ISignSettings signSettings)
    {
        _signSettings = signSettings;
        _hashAlgo = MD5.Create();
    }

    public string GetSignature(string str)
    {
        var strWithKey = str + _signSettings.EncryptionKey;

        var hashed = _hashAlgo.ComputeHash(Encoding.UTF8.GetBytes(strWithKey));

        return hashed.ToHexString();
    }
}

谢谢

解决方法

您的代码不是线程安全的. _hashAlgo不能在线程之间共享.请注意,您看到的异常不是唯一可能导致的问题;我相信这个问题也可能导致错误的哈希值.您需要每次都创建一个新的HashAlgorithm对象,或者查看线程局部文件以为每个线程创建一个实例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读