【问题标题】:SHA1 checksum with K leading zeroes带有 K 个前导零的 SHA1 校验和
【发布时间】:2020-03-15 07:43:12
【问题描述】:

我正在尝试找到一种超级有效的方法来为下面的等式生成随机字符串:

checkSum = SHA1(fixed_string + random_string)

校验和必须有 k 前导零才能满足最终条件。当前的实现是使用结合随机字符串生成器的蛮力方法。但是如果 K 大于 7,这种方法效率低且耗时。

static void
gen_random(char *s) {
    static const char alphanum[] =
        "0123456789"
        "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        "abcdefghijklmnopqrstuvwxyz";

    for (size_t i = 0; i < LENGTH - 1; ++i) {
        s[i] = alphanum[rand() % (sizeof(alphanum) - 1)];
    }
}

有没有人想开发一种有效的算法来生成随机字符串以有效地处理条件? 另一个问题是关于 (fixed_string + random_string) 的长度。正确处理 SHA1 校验和的最佳长度是多少?

谢谢

【问题讨论】:

  • 像 SHA-1 这样的加密算法被设计成难以逆转。除非发现算法的弱点,否则你不应该期望能够比蛮力改进很多。您可以使用Wikipedia 作为 SHA-1 中已知问题的起点。引用的技术论文可能包含适用的信息,但您应该期望它们需要相当多的知识才能应用。

标签: c++ c c++11 sha1 cryptocurrency


【解决方案1】:

如果我理解正确,您尝试在这里验证 SHA1 实现。 为此,我建议使用来自NIST的测试向量

有面向字节和面向位实现的测试向量。

shabytetestvectors/SHA1ShortMsg.rsp 文件中的测试向量示例

Len = 152
Msg = 148de640f3c11591a6f8c5c48632c5fb79d3b7
MD = b47be2c64124fa9a124a887af9551a74354ca411

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-10
    • 1970-01-01
    相关资源
    最近更新 更多