|
|
researchv10 Norman
/*
* Generate Key-dependent Permutation of 128 Characters
* D.P.Mitchell 83/06/28.
*/
#include "crypt.h"
extern Block xkey[];
Block tempkey[SUPERSIZE];
int permutation[128] = {
89,126,112, 71, 4, 60, 22, 37, 6, 39, 41, 75, 77, 94, 40, 84,
124, 59, 92, 96, 51, 26, 31, 52,127, 65, 63, 38, 68, 69,101, 36,
99,122,100, 19, 72, 61, 44, 73, 24,111, 25, 88, 7, 28,106, 32,
14, 98, 30, 0,104, 33, 78, 67,107, 74, 13,116, 15,103, 34, 3,
80,110, 91, 17,120,115, 46,119, 82, 57, 8, 76,105, 18, 43,109,
85, 95, 42,125,117, 87, 55, 54, 5, 29, 81, 1, 35,121, 10, 21,
11, 56, 20,102, 86, 47, 49, 83, 58, 70, 23, 12, 9, 2, 97, 53,
93, 45, 79, 27, 90, 62,113, 50, 48,118, 16,114, 66,123, 64,108,
};
shuffle_permutation()
{
int temp, i, j;
int bnum;
long x;
for (i = 0; i < SUPERSIZE; i++)
tempkey[i] = xkey[i];
for (i = 128; i > 0; ) {
bnum = (i / 2) % SUPERSIZE;
x = tempkey[bnum].left & 0x7fffffff;
j = x % i;
x = x / i;
--i;
temp = permutation[i];
permutation[i] = permutation[j];
permutation[j] = temp;
tempkey[bnum].left = x;
x = tempkey[bnum].right & 0x7fffffff;
j = x % i;
x = x / i;
--i;
temp = permutation[i];
permutation[i] = permutation[j];
permutation[j] = temp;
tempkey[bnum].right = x;
}
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.