|
|
1.1 ! root 1: /* makekey - make a key for the Atalla box. Courtesy ftg. */ ! 2: ! 3: ! 4: main(){ ! 5: int i, b; ! 6: unsigned long key=0; ! 7: ! 8: srand((int)time((long *)0)); ! 9: ! 10: printf("xxx:atalla:"); ! 11: ! 12: for(i=0; i<8; i++) { ! 13: printf("%.3o%s", b=nrand(256), i<7 ? " " : ""); ! 14: key = (key << 8) | b; ! 15: } ! 16: ! 17: printf(":\n"); ! 18: ! 19: /* printf("Check: %u\n", key); */ ! 20: } ! 21: ! 22: #define LENG 17 ! 23: static ! 24: long ary[LENG] = ! 25: { ! 26: 0x4B14EA50L, ! 27: 0x53C4A8E0L, ! 28: 0x67B1FA98L, ! 29: 0x9CFB3BB5L, ! 30: 0x18761AF1L, ! 31: 0x7970CD66L, ! 32: 0xDBAFE136L, ! 33: 0x3C31FC3EL, ! 34: 0x697B37DEL, ! 35: 0x07BC568BL, ! 36: 0xCAFD3967L, ! 37: 0xA8F48722L, ! 38: 0x4AB26824L, ! 39: 0xA479EE47L, ! 40: 0x5C7246E2L, ! 41: 0x954BF297L, ! 42: 0x20A713ADL, ! 43: }; ! 44: static ! 45: int i1 = 0; ! 46: static ! 47: int i2 = 12; ! 48: ! 49: srand(seed) ! 50: { ! 51: register i, j; ! 52: ! 53: for(i = 0; i < LENG; i++) { ! 54: ary[i] = 0x55555555L; ! 55: if(seed & 1) ! 56: ary[i] = 0xCCCCCCCCL; ! 57: if(seed & 0x8000) ! 58: ary[i] ^= 0xF0F0F0F0L; ! 59: seed >>= 1; ! 60: } ! 61: i1 = 0; ! 62: i2 = 12; ! 63: for(i = 1; i < 32; i += i) ! 64: do { ! 65: j = rand(); ! 66: ary[i1] += ary[i1] >> i; ! 67: ary[i2] += ary[i2] << i; ! 68: } while (i1); ! 69: } ! 70: ! 71: rand() ! 72: { ! 73: ! 74: if(++i1 >= LENG) ! 75: i1 = 0; ! 76: if(++i2 >= LENG) ! 77: i2 = 0; ! 78: ary[i1] += ary[i2]; ! 79: return((ary[i1] >> 15) & 0x7FFF); ! 80: } ! 81: ! 82: long ! 83: lrand() ! 84: { ! 85: ! 86: if(++i1 >= LENG) ! 87: i1 = 0; ! 88: if(++i2 >= LENG) ! 89: i2 = 0; ! 90: ary[i1] += ary[i2]; ! 91: return(ary[i1] & 0x7FFFFFFFL); ! 92: } ! 93: ! 94: double ! 95: frand() ! 96: { ! 97: ! 98: if(++i1 >= LENG) ! 99: i1 = 0; ! 100: if(++i2 >= LENG) ! 101: i2 = 0; ! 102: ary[i1] += ary[i2]; ! 103: return((ary[i1] & 0x7FFFFFFFL) / 2.147483648e9); ! 104: } ! 105: ! 106: nrand(n) ! 107: { ! 108: register long slop = 0x7FFFFFFFL % n, v; ! 109: ! 110: do{ ! 111: if(++i1 >= LENG) ! 112: i1 = 0; ! 113: if(++i2 >= LENG) ! 114: i2 = 0; ! 115: ary[i1] += ary[i2]; ! 116: v = ary[i1] & 0x7FFFFFFFL; ! 117: }while(v <= slop); ! 118: return(v % n); ! 119: } ! 120: ! 121: Srand(c1, c2, carray, clen) ! 122: int *c1, *c2, *carray, *clen; ! 123: { ! 124: register i, j; ! 125: ! 126: i = *c1; *c1 = i1; i1 = i; ! 127: i = *c2; *c2 = i2; i2 = i; ! 128: *clen = LENG; ! 129: for(i = 0; i < LENG; i++) ! 130: { ! 131: j = carray[i]; carray[i] = ary[i]; ary[i] = j; ! 132: } ! 133: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.