|
|
1.1 root 1: /*
2: * Hash User's Ascii Key into 1024 Bits with DES in CBC Mode
3: * D.P.Mitchell 83/05/24.
4: */
5:
6: #include "crypt.h"
7: #define KEY (*kstring ? (*kstring++ & 0377) : 0)
8:
9: Block xkey[SUPERSIZE];
10:
11: Block
12: key_crunch(kstring)
13: char *kstring;
14: {
15: register n;
16: Block hashkey;
17:
18: hashkey.right = 0x4f7b0289;
19: hashkey.left = 0x25da0a19;
20: key_setup(&hashkey, 0);
21: xkey[0].left = 0;
22: xkey[0].right = 0;
23: for (n = 0; n < SUPERSIZE; n++) {
24: xkey[n].left ^= KEY << 0;
25: xkey[n].left ^= KEY << 8;
26: xkey[n].left ^= KEY << 16;
27: xkey[n].left ^= KEY << 24;
28: xkey[n].right ^= KEY << 0;
29: xkey[n].right ^= KEY << 8;
30: xkey[n].right ^= KEY << 16;
31: xkey[n].right ^= KEY << 24;
32: des(&xkey[n]);
33: if (n < SUPERSIZE - 1)
34: xkey[n+1] = xkey[n];
35: }
36: return xkey[SUPERSIZE - 1];
37: }
38:
39: Block
40: recrunch()
41: {
42: register m, n;
43:
44: for (n = 0; n < SUPERSIZE; n++) {
45: m = (n + SUPERSIZE - 1) % SUPERSIZE;
46: xkey[n].left ^= xkey[m].left;
47: xkey[n].right ^= xkey[m].right;
48: des(&xkey[n]);
49: }
50: return xkey[SUPERSIZE - 1];
51: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.