【问题标题】:HTTP Digest Authentication - Share MD5 instance between multiple http requestsHTTP Digest Authentication - 在多个 http 请求之间共享 MD5 实例
【发布时间】:2016-03-07 20:00:48
【问题描述】:

我有自己的 HTTP 请求类,我使用它作为客户端向一些远程服务器发送 HTTP 请求。 我正在实现 HTTP 摘要身份验证并使用MD5 实例来执行哈希算法。 我想知道存储 MD5 实例的有效方法是什么? 我考虑了这些选项:

  1. 每个请求都会保存一个 MD5 实例,所以每次发送请求时我们都会这样做:m_md5 = MD5.Create();

    “创建”过程有多昂贵?

  2. MD5 实例将是静态的,将存储在请求类之外,我们将只使用 MD5.Create() 一次,所有请求实例将使用相同的 MD5 实例。请注意,许多线程正在创建HTTP 请求类的实例。它是线程安全的吗?

谢谢。

【问题讨论】:

  • MD5.Create 性能在我的机器上是可以接受的;大约在 26 秒内创建 1000 万个实例,每次创建 0,0026 毫秒。 HashAlgorithm 是 MD5 的基类,MD5 是 MD5CryptoServiceProvider 的基类,它不是线程安全的。

标签: c# http authentication hash md5


【解决方案1】:

作为 Oguz Ozgul Said,第二个选项是不可能的,因为 MD5 不是线程安全的,因为我们可以看到 here

此类型的任何公共静态(在 Visual Basic 中为共享)成员都是线程安全的。不保证任何实例成员都是线程安全的

【讨论】:

    猜你喜欢
    • 2021-09-26
    • 2019-12-25
    • 2016-01-05
    • 2022-06-26
    • 1970-01-01
    • 2013-03-10
    • 2020-12-05
    • 2017-05-02
    • 2012-06-03
    相关资源
    最近更新 更多