private void decryptTabelEntry(BigInteger[] cLabels) { int col = 0; for (int i = 0; i < nCIBits; i++) if (cLabels[i].testBit(0)) col |= (1 << i); BigInteger target = EGTable[col]; BigInteger colKey = BigInteger.ZERO; for (int k = nCIBits - 1; k >= 0; k--) colKey = colKey.shiftLeft(Wire.labelBitLength).xor(cLabels[k]); BigInteger res = Cipher.decrypt(colKey, target, nBits * Wire.labelBitLength); BigInteger mask = BigInteger.ONE.shiftLeft(Wire.labelBitLength).subtract(BigInteger.ONE); for (int k = nBits - 1; k >= 0; k--) outputLabels[k] = res.shiftRight(Wire.labelBitLength * k).and(mask); }