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对象,或者查看线程局部文件以为每个线程创建一个实例.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |