|
|
1.1 root 1: /*
2: * Data Encryption Standard (DES) Layer
3: * D.P.Mitchell 83/06/08.
4: */
5:
6: #include "crypt.h"
7:
8: extern long s0p[],s1p[],s2p[],s3p[],s4p[],s5p[],s6p[],s7p[];
9: extern int subkeys[];
10:
11: des(block)
12: Block *block;
13: {
14: register long crypto, temp;
15: register int *key;
16: register round;
17: register long right, left;
18:
19: left = block->left;
20: right = block->right;
21: key = subkeys;
22: for (round = 0; round < 16; round++) {
23: temp = (right << 1) | ((right >> 31) & 1);
24: crypto = s0p[(temp & 0x3f) ^ *key++];
25: crypto |= s1p[((temp & 0x3f0) >> 4) ^ *key++];
26: crypto |= s2p[((temp & 0x3f00) >> 8) ^ *key++];
27: crypto |= s3p[((temp & 0x3f000) >> 12) ^ *key++];
28: crypto |= s4p[((temp & 0x3f0000) >> 16) ^ *key++];
29: crypto |= s5p[((temp & 0x3f00000) >> 20) ^ *key++];
30: crypto |= s6p[((temp & 0x3f000000) >> 24) ^ *key++];
31: temp = ((right & 1) << 5) | ((right >> 27) & 0x1f);
32: crypto |= s7p[temp ^ *key++];
33: if (round == 15)
34: left ^= crypto;
35: else {
36: temp = left;
37: left = right;
38: right = temp ^ crypto;
39: }
40: }
41: block->left = left;
42: block->right = right;
43: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.