use*_*867 7 c# hash md5 cryptography cryptographic-hash-function
我收到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();
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
您的代码不是线程安全的._hashAlgo不能在线程之间共享.请注意,您看到的异常不是唯一可能导致的问题; 我相信这个问题也可能导致错误的哈希值.您需要HashAlgorithm每次都创建一个新对象,或者查看线程局部文件以为每个线程创建一个实例.
该代码似乎工作正常。问题可能是:
MDS.Create()内部GetSignature()SignService)_hashAlgo?如果是这样,请不要丢弃它或在需要时重新创建它。| 归档时间: |
|
| 查看次数: |
1571 次 |
| 最近记录: |