|
|
1.1 ! root 1: /* ! 2: * $Source: /mit/kerberos/src/lib/des/RCS/make_odd.c,v $ ! 3: * $Author: steiner $ ! 4: * ! 5: * Copyright 1988 by the Massachusetts Institute of Technology. ! 6: * ! 7: * For copying and distribution information, please see ! 8: * the file <mit-copyright.h>. ! 9: * ! 10: * This routine generates an odd-parity table for use in key generation. ! 11: */ ! 12: ! 13: #include <mit-copyright.h> ! 14: #include <stdio.h> ! 15: ! 16: void gen(stream) ! 17: FILE *stream; ! 18: { ! 19: /* ! 20: * map a byte into its equivalent with odd parity, where odd ! 21: * parity is in the least significant bit ! 22: */ ! 23: register i, j, k, odd; ! 24: ! 25: fprintf(stream, ! 26: "static unsigned char const odd_parity[256] = {\n"); ! 27: ! 28: for (i = 0; i < 256; i++) { ! 29: odd = 0; ! 30: /* shift out the lsb parity bit */ ! 31: k = i >> 1; ! 32: /* then count the other bits */ ! 33: for (j = 0; j < 7; j++) { ! 34: odd ^= (k&1); ! 35: k = k >> 1; ! 36: } ! 37: k = i&~1; ! 38: if (!odd) ! 39: k |= 1; ! 40: fprintf(stream, "%3d", k); ! 41: if (i < 255) ! 42: fprintf(stream, ", "); ! 43: if (i%8 == 0) ! 44: fprintf(stream, "\n"); ! 45: } ! 46: fprintf(stream, "};\n"); ! 47: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.