3

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

4

4 回答 4

2

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

于 2011-07-21T22:41:24.237 回答
2

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

于 2011-07-21T18:55:20.040 回答
1

你要这个?

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

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

于 2011-07-21T18:56:13.970 回答
0

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

于 2011-07-21T19:17:30.107 回答