# P10 to P8 in S-DES

I am new to cryptography. During my learning I am facing a problem with S-DES. I am confused where P10 to P8 come from, and I’m confused about the processing of this algorithm. Does anyone have any good article/paper/reference which enables me to understand how to solve it easily?

I am reading following example but getting confuse..

Example:

P10 = { 3, 5, 2, 7, 4, 10, 1, 9, 8, 6}
P8 = { 6, 3, 7, 4, 8, 5, 10, 9}
K =     10100 00010
P10     10000 01100
LS-1    00001 11000  ->  P8  ->  K1 = 1010 0100
LS-2    00100 00011  ->  P8  ->  K2 = 0100 0011

• See SIMPLIFIED DES, William Stallings.
– user1430
May 20 '15 at 23:08

S-DES is a toy cipher intended for learning, defined by Edward F. Schaefer, A Simplified Data Encryption Standard Algorithm, in Cryptologia Volume 20, Issue 1, 1996 (paywalled with free preview). It has the same structure as DES, and uses the same notations:

• bits vectors (such as key and data) are numbered starting from 1 "on the left"
• functions of bit vector giving bit vector, where each bit of the output vector is a fixed bit of the input vector, are expressed by a series of decimal numbers, giving, for each bit of the output, the index of the corresponding bit in the input.

P10 and P8 are such functions, which mimic PC1 and PC2 in DES. They are part of the definition of S-DES. P10 is an entirely arbitrary permutation of 10 bits. P8 is a selection of 8 bits out of 10.

P10 transforms a 10-bit vector into a 10-bit vector, such that the jth bit of the output is at the index in the input given by the jth number in 3, 5, 2, 7, 4, 10, 1, 9, 8, 6.
For example, the 2nd bit in the output is the 5th bit in the input, because the 2nd number in the above sequence of numbers is 5.

P8 transforms a 10-bit vector into an 8-bit vector, such that the jth bit of the output is at the index in the input given by the jth number in 6, 3, 7, 4, 8, 5, 10, 9.
For example, the 7th bit in the output is the 10th bit in the input, because the 7th number in the above sequence of numbers is 10.

The rest of the text in the question has the following meaning/rationale:

The key K = 1010000010 of S-DES is a 10-bit vector. K is transformed using P10, yielding a 10-bit vector CD0 = 1000001100, which is split into two 5-bit vectors C0 = 10000 and D0 = 01100.

In the first round,

• C0 and D0 each are rotated on the left by one, yielding C1 = 00001 and D1 = 11000.
• C1and D1 are joined into CD1 = 1100011000.
• CD1 is transformed using P8, yielding K1 = 10100100.

In the second round,

• C1 and D1 each are rotated on the left by two, yielding C2 = 00100 and D2 = 00011.
• C2and D2 are joined into CD2 = 0010000011.
• CD2 is transformed using P8, yielding K2 = 01000011.

K1 and K2 are the round keys for the first two rounds, and are used as input of the round functions.

P10 and P8 are standard transposition keys that just need to be learnt. They are part of the S-DES standard.

• One should not learn P10 and P8, but understand how they are used. S-DES is not a standard; it's a toy cipher.
– fgrieu
May 20 '15 at 17:49