gpt4 book ai didi

c# - ObjectDisposedException 使用 MD5 ComputeHash 时

转载 作者:太空狗 更新时间:2023-10-29 21:13:40 26 4
gpt4 key购买 nike

我收到 ObjectDisposedException:安全句柄已关闭。

这是我的代码:

我正在尝试创建一个接口(interface)和实现类,这将使我能够获取一个字符串,将一个已知 key 附加到它,计算该字符串和 key 的 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 对象,或者查看线程局部变量以便为每个线程创建一个实例。

关于c# - ObjectDisposedException 使用 MD5 ComputeHash 时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12212361/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com