All pastes #341539 Raw Edit

Something

public text v1 · immutable
·published 2007-02-05 18:41 UTC
rendered paste body
public class cypher {
    private int cvar1;
    private int cvar2;
    private int cvar3;
    private int offset;
    private int[] variants = new int[256];
    private int[] cyphers = new int[256];

    public cypher(int[] is) {
        for (int i = 0; is.length > i; i++)
            variants[i] = is[i];
        init();
    }

    private void init() {
        anInt651++;
        int byte2;
        int byte3;
        int byte4;
        int byte5;
        int byte6;
        int byte7;
        int byte8;
        int byte1 = byte2 = byte3 = byte4 = byte5 = byte6 = byte7 = byte8 = -1640531527;

        for (int i = 0; i < 4; i++) {
            byte1 ^= byte2 << 11;
            byte4 += byte1;
            byte2 += byte3;
            byte2 ^= byte3 >>> 2;
            byte5 += byte2;
            byte3 += byte4;
            byte3 ^= byte4 << 8;
            byte6 += byte3;
            byte4 += byte5;
            byte4 ^= byte5 >>> 16;
            byte5 += byte6;
            byte7 += byte4;
            byte5 ^= byte6 << 10;
            byte8 += byte5;
            byte6 += byte7;
            byte6 ^= byte7 >>> 4;
            byte1 += byte6;
            byte7 += byte8;
            byte7 ^= byte8 << 8;
            byte8 += byte1;
            byte2 += byte7;
            byte8 ^= byte1 >>> 9;
            byte3 += byte8;
            byte1 += byte2;
        }

        for (int i = 0; i < 256; i += 8) {
            byte1 += variants[i];
            byte2 += variants[i + 1];
            byte3 += variants[i + 2];
            byte4 += variants[i + 3];
            byte5 += variants[i + 4];
            byte6 += variants[i + 5];
            byte7 += variants[i + 6];
            byte8 += variants[i + 7];
            byte1 ^= byte2 << 11;
            byte2 += byte3;
            byte4 += byte1;
            byte2 ^= byte3 >>> 2;
            byte3 += byte4;
            byte3 ^= byte4 << 8;
            byte6 += byte3;
            byte5 += byte2;
            byte4 += byte5;
            byte4 ^= byte5 >>> 16;
            byte7 += byte4;
            byte5 += byte6;
            byte5 ^= byte6 << 10;
            byte8 += byte5;
            byte6 += byte7;
            byte6 ^= byte7 >>> 4;
            byte7 += byte8;
            byte7 ^= byte8 << 8;
            byte1 += byte6;
            byte2 += byte7;
            byte8 += byte1;
            byte8 ^= byte1 >>> 9;
            byte3 += byte8;
            byte1 += byte2;
            cyphers[i] = byte1;
            cyphers[i + 1] = byte2;
            cyphers[i + 2] = byte3;
            cyphers[i + 3] = byte4;
            cyphers[i + 4] = byte5;
            cyphers[i + 5] = byte6;
            cyphers[i + 6] = byte7;
            cyphers[i + 7] = byte8;
        }

        for (int i = 0; i < 256; i += 8) {
            byte1 += cyphers[i];
            byte2 += cyphers[i + 1];
            byte3 += cyphers[i + 2];
            byte4 += cyphers[i + 3];
            byte5 += cyphers[i + 4];
            byte6 += cyphers[i + 5];
            byte7 += cyphers[i + 6];
            byte8 += cyphers[i + 7];
            byte1 ^= byte2 << 11;
            byte2 += byte3;
            byte4 += byte1;
            byte2 ^= byte3 >>> 2;
            byte3 += byte4;
            byte3 ^= byte4 << 8;
            byte5 += byte2;
            byte4 += byte5;
            byte4 ^= byte5 >>> 16;
            byte7 += byte4;
            byte6 += byte3;
            byte5 += byte6;
            byte5 ^= byte6 << 10;
            byte8 += byte5;
            byte6 += byte7;
            byte6 ^= byte7 >>> 4;
            byte7 += byte8;
            byte7 ^= byte8 << 8;
            byte1 += byte6;
            byte2 += byte7;
            byte8 += byte1;
            byte8 ^= byte1 >>> 9;
            byte1 += byte2;
            byte3 += byte8;
            cyphers[i] = byte1;
            cyphers[i + 1] = byte2;
            cyphers[i + 2] = byte3;
            cyphers[i + 3] = byte4;
            cyphers[i + 4] = byte5;
            cyphers[i + 5] = byte6;
            cyphers[i + 6] = byte7;
            cyphers[i + 7] = byte8;
        }

        next();
        offset = 256;
    }

    public int getkey() {
        anInt661++;
        if (offset-- == 0) {
            next();
            offset = 255;
        }
        return variants[offset];
    }

    private void next() {
        anInt647++;
        cvar2 += ++cvar3;

        for (int i = 0; i < 256; i++) {
            int variant = cyphers[i];
            if ((i & 0x2) == 0) {
                if ((i & 0x1) == 0)
                    cvar1 ^= cvar1 << 13;
                else
                    cvar1 ^= cvar1 >>> 6;
            } else {
                if ((i & 0x1) == 0)
                    cvar1 ^= cvar1 << 2;
                else
                    cvar1 ^= cvar1 >>> 16;
            }
            cvar1 += cyphers[0xff & i + 128];
            int cypher;
            cyphers[i] = cypher = cvar1 + cyphers[(variant >> 2) & 0xff] + cvar2;
            variants[i] = cvar2 = cyphers[(cypher >> 8 >> 2) & 0xff] + variant;
        }
    }
}