.net 使用MD5哈希算法生成ServicePartitionKey时很少返回WindowsCryptographicException

jv4diomz  于 2022-12-20  发布在  .NET
关注(0)|答案(1)|浏览(104)

我们正在使用MD5哈希算法生成PartitionKey以路由到有状态服务。很长一段时间以来,我们没有看到这种方法中的任何相关问题。但是,升级到. NET 6后,我们在尝试路由到有状态服务时很少在日志中看到WindowsCryptographicException。
区域/组件:状态服务、PartitionKey生成器
重现
私有只读MD5_md5 = MD5.Create();

public long GetPartitionKey(string Id)
{
    var bytesToHash = Encoding.ASCII.GetBytes($"{Id}");

    var hash = _md5.ComputeHash(bytesToHash);
    var key = BitConverter.ToInt64(hash, 0);
    return key;
}

预期行为不应返回任何错误。观察到的行为:{"类型":" WindowsCryptographicException ","消息":"未知错误(0xc1000008)"," StackTrace ":"位于内部.加密. HashProviderCng. AppendHashData(ReadOnlySpan "1源)位于内部.加密. HashProvider. AppendHashData(Byte [] data,Int32偏移量,Int32计数)位于系统.安全.加密. HashAlgorithm. ComputeHash(Byte [] buffer)屏幕截图如果适用,请添加屏幕截图以帮助解释问题。
服务结构运行时版本:8.0
环境:
Azure Linux如果这是一个回归,它从哪个版本回归?升级到.NET6后

31moq8wy

31moq8wy1#

  • 我们使用.NET6和有状态服务,并使用MD5哈希算法,能够运行和部署,没有任何异常 *
  • 尝试以"Administrator"身份运行Visual studio以下是安装的Service Fabric版本**

  • 对MD5使用了GetPartitionKey代码 *

相关问题