|
|
1.1 ! root 1: typedef union { ! 2: long words[2]; ! 3: unsigned char bytes[8]; ! 4: } block; ! 5: ! 6: extern unsigned short ip_L0[],ip_L2[],ip_L4[],ip_L6[] ; ! 7: extern unsigned short ip_L8[],ip_La[],ip_Lc[],ip_Le[]; ! 8: extern unsigned long ip_L1[],ip_L3[],ip_L5[],ip_L7[] ; ! 9: extern unsigned long ip_L9[],ip_Lb[],ip_Ld[],ip_Lf[]; ! 10: extern unsigned short ip_H0[],ip_H2[],ip_H4[],ip_H6[] ; ! 11: extern unsigned short ip_H8[],ip_Ha[],ip_Hc[],ip_He[]; ! 12: extern unsigned long ip_H1[],ip_H3[],ip_H5[],ip_H7[] ; ! 13: extern unsigned long ip_H9[],ip_Hb[],ip_Hd[],ip_Hf[]; ! 14: extern unsigned long ipi_L0[],ipi_L2[],ipi_L4[],ipi_L6[] ; ! 15: extern unsigned long ipi_L8[],ipi_La[],ipi_Lc[],ipi_Le[]; ! 16: extern unsigned long ipi_H1[],ipi_H3[],ipi_H5[],ipi_H7[] ; ! 17: extern unsigned long ipi_H9[],ipi_Hb[],ipi_Hd[],ipi_Hf[]; ! 18: extern long SP0[],SP1[],SP2[],SP3[],SP4[],SP5[],SP6[],SP7[]; ! 19: extern unsigned long E_L0[], E_L5[], E_L6[], E_L7[]; ! 20: extern unsigned short E_L2[], E_L3[], E_L4[]; ! 21: extern unsigned long E_H0[], E_H1[], E_H2[], E_H7[]; ! 22: int shift[] = {1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1}; ! 23: long keys_L[16], keys_H[16]; ! 24: ! 25: des(in, out) ! 26: long in[2], out[2]; ! 27: { ! 28: register unsigned long low, high; ! 29: register unsigned long temp; ! 30: register i; ! 31: register unsigned long right, left; ! 32: ! 33: temp = in[0]; ! 34: low = ip_L0[temp & 0xf]; ! 35: high = ip_H0[temp & 0xf]; ! 36: temp >>= 4; ! 37: low |= ip_L1[temp & 0xf]; ! 38: high |= ip_H1[temp & 0xf]; ! 39: temp >>= 4; ! 40: low |= ip_L2[temp & 0xf]; ! 41: high |= ip_H2[temp & 0xf]; ! 42: temp >>= 4; ! 43: low |= ip_L3[temp & 0xf]; ! 44: high |= ip_H3[temp & 0xf]; ! 45: temp >>= 4; ! 46: low |= ip_L4[temp & 0xf]; ! 47: high |= ip_H4[temp & 0xf]; ! 48: temp >>= 4; ! 49: low |= ip_L5[temp & 0xf]; ! 50: high |= ip_H5[temp & 0xf]; ! 51: temp >>= 4; ! 52: low |= ip_L6[temp & 0xf]; ! 53: high |= ip_H6[temp & 0xf]; ! 54: temp >>= 4; ! 55: low |= ip_L7[temp & 0xf]; ! 56: high |= ip_H7[temp & 0xf]; ! 57: temp = in[1]; ! 58: low |= ip_L8[temp & 0xf]; ! 59: high |= ip_H8[temp & 0xf]; ! 60: temp >>= 4; ! 61: low |= ip_L9[temp & 0xf]; ! 62: high |= ip_H9[temp & 0xf]; ! 63: temp >>= 4; ! 64: low |= ip_La[temp & 0xf]; ! 65: high |= ip_Ha[temp & 0xf]; ! 66: temp >>= 4; ! 67: low |= ip_Lb[temp & 0xf]; ! 68: high |= ip_Hb[temp & 0xf]; ! 69: temp >>= 4; ! 70: low |= ip_Lc[temp & 0xf]; ! 71: high |= ip_Hc[temp & 0xf]; ! 72: temp >>= 4; ! 73: low |= ip_Ld[temp & 0xf]; ! 74: high |= ip_Hd[temp & 0xf]; ! 75: temp >>= 4; ! 76: low |= ip_Le[temp & 0xf]; ! 77: high |= ip_He[temp & 0xf]; ! 78: temp >>= 4; ! 79: low |= ip_Lf[temp & 0xf]; ! 80: high |= ip_Hf[temp & 0xf]; ! 81: left = low; ! 82: right = high; ! 83: for (i = 0; i < 15; i++) { ! 84: temp = right; ! 85: low = E_L0[temp & 0xf]; ! 86: high = E_H0[temp & 0xf]; ! 87: temp >>= 4; ! 88: high |= E_H1[temp & 0xf]; ! 89: temp >>= 4; ! 90: low |= E_L2[temp & 0xf]; ! 91: high |= E_H2[temp & 0xf]; ! 92: temp >>= 4; ! 93: low |= E_L3[temp & 0xf]; ! 94: temp >>= 4; ! 95: low |= E_L4[temp & 0xf]; ! 96: temp >>= 4; ! 97: low |= E_L5[temp & 0xf]; ! 98: temp >>= 4; ! 99: low |= E_L6[temp & 0xf]; ! 100: temp >>= 4; ! 101: low |= E_L7[temp & 0xf]; ! 102: high |= E_H7[temp & 0xf]; ! 103: low ^= keys_L[i]; ! 104: high ^= keys_H[i]; ! 105: temp = SP0[(high >> 16) & 077]; ! 106: temp |= SP1[(high >> 22) & 077]; ! 107: temp |= SP2[((low & 03) << 4) | ((high >> 28) & 017)]; ! 108: temp |= SP3[(low >> 2) & 077]; ! 109: temp |= SP4[(low >> 8) & 077]; ! 110: temp |= SP5[(low >> 14) & 077]; ! 111: temp |= SP6[(low >> 20) & 077]; ! 112: temp |= SP7[(low >> 26) & 077]; ! 113: high = left; ! 114: left = right; ! 115: right = high ^ temp; ! 116: } ! 117: temp = right; ! 118: low = E_L0[temp & 0xf]; ! 119: high = E_H0[temp & 0xf]; ! 120: temp >>= 4; ! 121: high |= E_H1[temp & 0xf]; ! 122: temp >>= 4; ! 123: low |= E_L2[temp & 0xf]; ! 124: high |= E_H2[temp & 0xf]; ! 125: temp >>= 4; ! 126: low |= E_L3[temp & 0xf]; ! 127: temp >>= 4; ! 128: low |= E_L4[temp & 0xf]; ! 129: temp >>= 4; ! 130: low |= E_L5[temp & 0xf]; ! 131: temp >>= 4; ! 132: low |= E_L6[temp & 0xf]; ! 133: temp >>= 4; ! 134: low |= E_L7[temp & 0xf]; ! 135: high |= E_H7[temp & 0xf]; ! 136: low ^= keys_L[i]; ! 137: high ^= keys_H[i]; ! 138: temp = SP0[(high >> 16) & 077]; ! 139: temp |= SP1[(high >> 22) & 077]; ! 140: temp |= SP2[((low & 03) << 4) | ((high >> 28) & 017)]; ! 141: temp |= SP3[(low >> 2) & 077]; ! 142: temp |= SP4[(low >> 8) & 077]; ! 143: temp |= SP5[(low >> 14) & 077]; ! 144: temp |= SP6[(low >> 20) & 077]; ! 145: temp |= SP7[(low >> 26) & 077]; ! 146: left ^= temp; ! 147: temp = left; ! 148: low = ipi_L0[temp & 0xf]; ! 149: temp >>= 4; ! 150: high = ipi_H1[temp & 0xf]; ! 151: temp >>= 4; ! 152: low |= ipi_L2[temp & 0xf]; ! 153: temp >>= 4; ! 154: high |= ipi_H3[temp & 0xf]; ! 155: temp >>= 4; ! 156: low |= ipi_L4[temp & 0xf]; ! 157: temp >>= 4; ! 158: high |= ipi_H5[temp & 0xf]; ! 159: temp >>= 4; ! 160: low |= ipi_L6[temp & 0xf]; ! 161: temp >>= 4; ! 162: high |= ipi_H7[temp & 0xf]; ! 163: temp = right; ! 164: low |= ipi_L8[temp & 0xf]; ! 165: temp >>= 4; ! 166: high |= ipi_H9[temp & 0xf]; ! 167: temp >>= 4; ! 168: low |= ipi_La[temp & 0xf]; ! 169: temp >>= 4; ! 170: high |= ipi_Hb[temp & 0xf]; ! 171: temp >>= 4; ! 172: low |= ipi_Lc[temp & 0xf]; ! 173: temp >>= 4; ! 174: high |= ipi_Hd[temp & 0xf]; ! 175: temp >>= 4; ! 176: low |= ipi_Le[temp & 0xf]; ! 177: temp >>= 4; ! 178: high |= ipi_Hf[temp & 0xf]; ! 179: out[0] = low; ! 180: out[1] = high; ! 181: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.