C++ 带K个前导零的SHA1校验和

C++ 带K个前导零的SHA1校验和,c++,c,c++11,sha1,cryptocurrency,C++,C,C++11,Sha1,Cryptocurrency,我试图找到一种超级高效的方法,为下面的等式生成一个随机字符串: checkSum = SHA1(fixed_string + random_string) 校验和必须有k个前导零才能满足最终条件。当前的实现是使用蛮力方法与随机字符串生成器相结合。但如果K大于7,这种方法效率低且耗时 有没有人想到开发一种生成随机字符串的高效算法,以高效的方式处理这种情况? 另一个问题是关于固定字符串+随机字符串的长度。正确处理SHA1校验和的最佳长度是多少 谢谢如果我理解正确,您在这里尝试验证SHA1实现。 为

我试图找到一种超级高效的方法,为下面的等式生成一个随机字符串:

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

有没有人想到开发一种生成随机字符串的高效算法,以高效的方式处理这种情况? 另一个问题是关于固定字符串+随机字符串的长度。正确处理SHA1校验和的最佳长度是多少


谢谢

如果我理解正确,您在这里尝试验证SHA1实现。 为此,我建议使用

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

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


像SHA-1这样的加密算法被设计成难以逆转的。除非已经发现算法的弱点,否则您不应该期望能够比暴力改进很多。您可以将其用作SHA-1中已知问题的起点。参考的技术文件可能有适用的信息,但您应该期望它们需要相当多的知识才能应用。
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)];
    }
}
Len = 152
Msg = 148de640f3c11591a6f8c5c48632c5fb79d3b7
MD = b47be2c64124fa9a124a887af9551a74354ca411