SHOW:
|
|
- or go back to the newest paste.
1 | #include <stdlib.h> | |
2 | #include <stdio.h> | |
3 | #include <stdint.h> | |
4 | #include <string.h> | |
5 | - | #include <pthread.h> |
5 | + | |
6 | ||
7 | int main(int argc, char** argv) | |
8 | - | typedef struct { |
8 | + | |
9 | - | int threadid; |
9 | + | |
10 | - | int iterations; |
10 | + | |
11 | uint64_t dataMin; | |
12 | - | unsigned char outputMin[64]; |
12 | + | |
13 | - | } Setup; |
13 | + | |
14 | if(argc > 1) iter = atoi(argv[1]); | |
15 | - | void* runSearch(void* context) |
15 | + | |
16 | uint64_t data = 0; | |
17 | - | Setup* setup = context; |
17 | + | |
18 | - | uint64_t data = setup->threadid; |
18 | + | |
19 | data &= 0x1f1f1f1f1f1f1f1fll; | |
20 | - | setup->dataMin = data; |
20 | + | |
21 | - | unsigned char* min = setup->outputMin; |
21 | + | for(int x=0 ; x<iter ; x++) |
22 | - | min[0] = 0xff; |
22 | + | |
23 | SHA512((unsigned char*)&data, 8, output); | |
24 | for(int i=0 ; i<64 ; i++) | |
25 | { | |
26 | - | for(int x=0 ; x<setup->iterations ; x++) |
26 | + | if(output[i] < outputMin[i]) |
27 | { | |
28 | memcpy(outputMin, output, 64); | |
29 | dataMin = data; | |
30 | break; | |
31 | - | if(output[i] < min[i]) |
31 | + | |
32 | else if(output[i] > outputMin[i]) | |
33 | - | memcpy(min, output, 64); |
33 | + | |
34 | - | setup->dataMin = data; |
34 | + | |
35 | } | |
36 | } | |
37 | - | else if(output[i] > min[i]) |
37 | + | |
38 | data += 1; | |
39 | data &= 0x1f1f1f1f1f1f1f1fll; | |
40 | data |= 0x4040404040404040ll; | |
41 | } | |
42 | ||
43 | - | data += 8; |
43 | + | |
44 | printf("%c", ((char*)&dataMin)[i]); | |
45 | puts(""); | |
46 | ||
47 | for(int i=0 ; i<64 ; i++) | |
48 | - | return NULL; |
48 | + | |
49 | - | } |
49 | + | |
50 | } |