def __des_crypt(self, block, crypt_type):
block = self.__permutate(des.__ip, block)<EOL>self.L = block[:<NUM_LIT:32>]<EOL>self.R = block[<NUM_LIT:32>:]<EOL>if crypt_type == des.ENCRYPT:<EOL><INDENT>iteration = <NUM_LIT:0><EOL>iteration_adjustment = <NUM_LIT:1><EOL><DEDENT>else:<EOL><INDENT>iteration = <NUM_LIT:15><EOL>iteration_adjustment = -<NUM_LIT:1><EOL><DEDENT>i = <NUM_LIT:0><EOL>while i < <NUM_LIT:16>:<EOL><INDENT>tempR = self.R[:]<EOL>self.R = self.__permutate(des.__expansion_table, self.R)<EOL>self.R = list(map(lambda x, y: x ^ y, self.R, self.Kn[iteration]))<EOL>B = [self.R[:<NUM_LIT:6>], self.R[<NUM_LIT:6>:<NUM_LIT:12>], self.R[<NUM_LIT:12>:<NUM_LIT>], self.R[<NUM_LIT>:<NUM_LIT>], self.R[<NUM_LIT>:<NUM_LIT:30>], self.R[<NUM_LIT:30>:<NUM_LIT>], self.R[<NUM_LIT>:<NUM_LIT>], self.R[<NUM_LIT>:]]<EOL>j = <NUM_LIT:0><EOL>Bn = [<NUM_LIT:0>] * <NUM_LIT:32><EOL>pos = <NUM_LIT:0><EOL>while j < <NUM_LIT:8>:<EOL><INDENT>m = (B[j][<NUM_LIT:0>] << <NUM_LIT:1>) + B[j][<NUM_LIT:5>]<EOL>n = (B[j][<NUM_LIT:1>] << <NUM_LIT:3>) + (B[j][<NUM_LIT:2>] << <NUM_LIT:2>) + (B[j][<NUM_LIT:3>] << <NUM_LIT:1>) + B[j][<NUM_LIT:4>]<EOL>v = des.__sbox[j][(m << <NUM_LIT:4>) + n]<EOL>Bn[pos] = (v & <NUM_LIT:8>) >> <NUM_LIT:3><EOL>Bn[pos + <NUM_LIT:1>] = (v & <NUM_LIT:4>) >> <NUM_LIT:2><EOL>Bn[pos + <NUM_LIT:2>] = (v & <NUM_LIT:2>) >> <NUM_LIT:1><EOL>Bn[pos + <NUM_LIT:3>] = v & <NUM_LIT:1><EOL>pos += <NUM_LIT:4><EOL>j += <NUM_LIT:1><EOL><DEDENT>self.R = self.__permutate(des.__p, Bn)<EOL>self.R = list(map(lambda x, y: x ^ y, self.R, self.L))<EOL>self.L = tempR<EOL>i += <NUM_LIT:1><EOL>iteration += iteration_adjustment<EOL><DEDENT>self.final = self.__permutate(des.__fp, self.R + self.L)<EOL>return self.final<EOL>
Crypt the block of data through DES bit-manipulation