【问题标题】:HMAC SHA256 in .NET .1.1.NET .1.1 中的 HMAC SHA256
【发布时间】:2015-11-12 08:38:13
【问题描述】:

我必须敢于使用 .NET 1.1 Framework 开发的 Web 应用程序,无法升级到主要版本。

话虽如此,我需要使用 HMAC SHA256 加密文本。

我看到 .NET 1.1 中的 System.Security.Cryptography 命名空间为我提供了一种在 SHA256 中显示消息的方法。但是我需要使用带有 SHA256 的 HMAC(基于哈希的消息验证码),所以我发送不仅要加密的文本,还要发送一个密钥

我看到 .NET Framework 2.0 及更高版本有一个特定的类 HMACSHA256 来管理它。但尚未找到 .NET 1.1 的实现。

¿有什么帮助吗?

提前致谢

【问题讨论】:

  • iirc .net 可以访问机器上安装的任何加密内容,包括所有 CNG 内容...但您必须具体命名您正在使用的内容
  • 结论:最后我在这个链接中使用了答案:stackoverflow.com/questions/21498696/…。它有一些来自 .NET 3.5 的语法,但很容易适应,而且对我有用。

标签: c# asp.net sha256 hmac .net-1.1


【解决方案1】:

您可以将来自Microsoft 的文件添加到您的项目中:

namespace System.Security.Cryptography {
    [System.Runtime.InteropServices.ComVisible(true)]
    public class HMACSHA256 : HMAC {
        //
        // public constructors
        //

        public HMACSHA256 () : this (Utils.GenerateRandom(64)) {}

        public HMACSHA256 (byte[] key) {
            m_hashName = "SHA256";

#if FEATURE_CRYPTO
            m_hash1 = GetHashAlgorithmWithFipsFallback(() => new SHA256Managed(), () => HashAlgorithm.Create("System.Security.Cryptography.SHA256CryptoServiceProvider"));
            m_hash2 = GetHashAlgorithmWithFipsFallback(() => new SHA256Managed(), () => HashAlgorithm.Create("System.Security.Cryptography.SHA256CryptoServiceProvider"));
#else
            m_hash1 = new SHA256Managed();
            m_hash2 = new SHA256Managed();
#endif // FEATURE_CRYPTO

            HashSizeValue = 256;
            base.InitializeKey(key);
        }
    }
}

似乎所有调用都基于 .Net 1.1 中存在的类

【讨论】:

  • 谢谢托马斯!我现在正在看。认为我可能不得不添加 HMAC 基类。我会告诉你这是否有效
  • 嘘!这可能很难......一个类从另一个继承,一个从另一个继承,等等。:)
  • @Javier 是的,但 KeyedHashAlgorithm 在 .Net 1.1 中可用(好消息:p)
  • 我正在尝试将该代码放入我自己的课程中,但不确定它是否最终会起作用。不管怎样,我会继续努力。我会告诉你这是如何结束的。无论如何,非常感谢,你投了我的赞成票!
  • @Javier 很高兴听到它(几乎)对你有用!
猜你喜欢
  • 2017-11-30
  • 2020-10-18
  • 2018-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多