我想從我的 char 串列中生成一個 64 個字符的字串,但是在生成每個字串之后,它會將字串的第一個數字迭代到下一個數字,依此類推,之后將檢查希望是每個字串的 sha256 函式的結果,例如我有以下字串列char hex_numbers[16] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a' ,'b','c','d','e','f'};
我想生成并檢查包含串列中每個字符的每個字串的 sha256 結果 - > [字串 64 位] 從“00000 ....”到“fffff ....”
我已經實作了 sha256 函式我的問題只是關于如何迭代字串中的每個數字并轉到使用的數字之后的下一個數字,如果它有意義的話
所以我正在考慮在每個回圈中回圈并進行下一次迭代,但是我怎樣才能實作這樣的事情呢?抱歉,如果我的問題聽起來令人困惑
例如,第一個字串應該是一個全為零的 64 個字符字串,第二個字串是 '1' char [63] '0' 字符,第三個字串是 '2' char [63] '0' 字符等等直到它通過回圈遍歷所有字符達到'f [64次]'
uj5u.com熱心網友回復:
這個問題類似于在 X-ary 中找到第 k 個數
#include <algorithm>
#include <cstdio>
#include <iterator>
#include <unordered_map>
#include <vector>
int main(int argc, char const *argv[]) {
const char alphabet[16] = {'0', '1', '2', '3', '4', '5', '6', '7',
'8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
auto generate_kth_string = [&alphabet](int len, size_t kth) {
char *buf = new char[len 1];
int size = sizeof(alphabet) / sizeof(alphabet[0]);
for (int i = 0; i < len; i ) {
buf[len - i - 1] = alphabet[kth % size];
kth /= size;
}
buf[len] = '\0';
return buf;
};
int count = 256;
int len = 64;
for (int i = 0; i < count; i ) {
auto kth = generate_kth_string(len, i);
printf("%s\n", kth);
delete[] kth;
}
}
輸出:
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000001
0000000000000000000000000000000000000000000000000000000000000002
0000000000000000000000000000000000000000000000000000000000000003
0000000000000000000000000000000000000000000000000000000000000004
0000000000000000000000000000000000000000000000000000000000000005
0000000000000000000000000000000000000000000000000000000000000006
0000000000000000000000000000000000000000000000000000000000000007
0000000000000000000000000000000000000000000000000000000000000008
...
00000000000000000000000000000000000000000000000000000000000000fb
00000000000000000000000000000000000000000000000000000000000000fc
00000000000000000000000000000000000000000000000000000000000000fd
00000000000000000000000000000000000000000000000000000000000000fe
00000000000000000000000000000000000000000000000000000000000000ff
對于一個 64 位的數字,需要 2 ^ 64 次計算,所以你不能依靠這個演算法在有限的時間內破解任何密碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/470086.html
標籤:C