|
|
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.