/* look for ways to break the cryptographic hash */ #define LEN 1000 static int iii; static int jjj; static int kkk; static int lll; static int mmm; #define OFF1 (iii) #define OFF2 (OFF1+jjj) #define OFF3 (OFF2+kkk) #define OFF4 (OFF3+lll) #define GAP 3 /* how many permutations per gap */ #define VAR 4 /* how many uses of each block */ #define LIMIT 30 /* we need at least 30 permutations */ #define MAX 50 /* examine deltas up to 50 blocks apart */ int check(int x[LEN][VAR], int *a, int len) { int i; int on = LIMIT; int off = 0; int limit = LIMIT; for (i=0; i<=GAP*(a[len-1]+OFF3+5); ++i) { int temp; int count = 0; int j, k; ++on; temp = (off < on) ? off : on; if (temp >= limit) return 0; for (j=0; j 1) { int temp = (off < on) ? off : on; off = temp; /* we can choose either way */ on = temp; /* we can choose either way */ } } if (off < limit) { if (len > 5) { printf("found a bad one %d %d\n ", off, on); for (i=0; i