【问题标题】:C++ how to make simple sha256 generator with boost?C ++如何使用boost制作简单的sha256生成器?
【发布时间】:2011-07-22 10:08:33
【问题描述】:

我需要一个简单的字符串到 sha256 生成器类。我不想为之类的 openSSL 或 Cripto++ 构建大型库——我只想将字符串转换为 sha256。如何创建这样的类或从哪里获得它?

【问题讨论】:

  • 哪个侧信道攻击是相关的?
  • 如果您没有丰富的数学经验,通常尝试自己实现复杂的密码学是个坏主意。
  • 为什么“提升”是相关的?你查过算法吗?

标签: c++ math boost encryption sha256


【解决方案1】:

就像其他人所说的那样,我的印象是 SHA256 下的散列并不简单,无法简单地将自己实现为更大编码项目的子集。如果你看一下wikipedia page for SHA-2,你会注意到一些非常密集的数学运算。如果您想要实际的加密摘要(数学理论本身),可以找到here。如果您像大多数不强调安全性的程序员一样,那么您可能只想简单地使用其他人经过测试和尝试的实现。你可以找到很多here。让我知道这是否有帮助。抱歉,我无法用直接代码或类似的东西回答你的问题。

【讨论】:

    【解决方案2】:

    您可以直接在RFC 6234 的第 8 节中找到 C 源代码。确保你也检查errata

    【讨论】:

      【解决方案3】:

      你想要这个吗?

      static void
      sha2_round(const unsigned char *data, sph_u32 r[8])
      {
          int i;
          sph_u32 a, b, c, d, e, f, g, h;
          sph_u32 w[64];
      
          for (i = 0; i < 16; i ++)
              w[i] = sph_dec32be_aligned(data + (4 * i));
          for (i = 16; i < 64; i ++) {
              w[i] = SPH_T32(SSG2_1(w[i - 2]) + w[i - 7]
                  + SSG2_0(w[i - 15]) + w[i - 16]);
      

      转到http://www.saphir2.com/sphlib/ 并下载它。它在 GPL 下。查看sha2.c

      请注意,它没有很多文档。它是为已经知道自己在做什么的人设置的。

      【讨论】:

        【解决方案4】:

        GNU coreutils 有一个非常简单的源代码。 只需下载coreutils,他们甚至有一个可以构建的测试套件,并且源代码充满了cmets和文档。

        【讨论】:

          猜你喜欢
          • 2012-05-18
          • 2011-01-16
          • 2023-03-24
          • 1970-01-01
          • 1970-01-01
          • 2021-06-08
          • 2011-07-20
          • 2022-01-21
          相关资源
          最近更新 更多