Annotation of researchv10no/cmd/descrypt/permute.c, revision 1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.