【发布时间】: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