# 2.2.11.1.2 Encrypting a 64-Bit Block with a 7-Byte Key

Transform the 7-byte key into an 8-byte key as follows:

Let InputKey be the 7-byte key, represented as a zero-base-index array.

Let OutputKey be an 8-byte key, represented as a zero-base-index array.

Let OutputKey be assigned as follows.

OutputKey[0] = InputKey[0] >> 0x01; OutputKey[1] = ((InputKey[0]&0x01)<<6) | (InputKey[1]>>2); OutputKey[2] = ((InputKey[1]&0x03)<<5) | (InputKey[2]>>3); OutputKey[3] = ((InputKey[2]&0x07)<<4) | (InputKey[3]>>4); OutputKey[4] = ((InputKey[3]&0x0F)<<3) | (InputKey[4]>>5); OutputKey[5] = ((InputKey[4]&0x1F)<<2) | (InputKey[5]>>6); OutputKey[6] = ((InputKey[5]&0x3F)<<1) | (InputKey[6]>>7); OutputKey[7] = InputKey[6] & 0x7F;

The 7-byte InputKey is expanded to 8 bytes by inserting a 0-bit after every seventh bit.

for( int i=0; i<8; i++ ) { OutputKey[i] = (OutputKey[i] << 1) & 0xfe; }

Let the least-significant bit of each byte of OutputKey be a parity bit. That is, if the sum of the preceding seven bits is odd, the eighth bit is 0; otherwise, the eighth bit is 1. The processing starts at the leftmost bit of OutputKey.

Use [FIPS81] to encrypt the 64-bit block using OutputKey. If the higher-level operation is decryption instead of encryption, this is the point at which an implementer MUST specify the decryption intent to [FIPS81].