64비트 평문을 입력받아 64비트 블록을 생성
64개의 비트를 테이블에 의해 치환, 마지막에 역순 테이블로 치환
예시) 테이블의 첫 번째 수가 58이면, 첫 번째 비트는 58번째 비트가 된다.
DES 알고리즘의 첫 번째와 마지막 단계에 해당
데이터에 더 많은 난독화 제공
확장된 48비트 데이터는 XOR 연산을 거쳐 8개의 S-박스에 입력됨
각 S-박스는 6비트 입력을 4비트 출력으로 변환: {0,1}6→{0,1}4a1a2a3a4a5a6→a1a6:row,a2a3a4a5:col
S 박스의 행과 열은 0부터 시작, 결과에 해당하는 값을 다시 2진수로 바꾸면 4비트 출력이 나옴
순열 선택 (Permutation Choice 1, PC-1): 56비트 키 K는 C0,D0로 변환됨, 각각은 28비트
후속 단계에서 서브키를 생성하기 위한 기초가 된다.
DES가 사용하는 키 K는 64비트이지만 8개의 비트는 패리티 비트로 사용되어 56비트만 사용
패리티 비트: 오류 감지 역할
Ci−1,Di−1을 이용하여 Ci,Di를 생성
각 라운드 별 정해진 shift 값에 따라 Ci,Di를 왼쪽으로 shift
순열 선택 2 (Permutation Choice 2, PC-2)를 통해 이동 완료한 Ci,Di를 재배열하여 48비트 서브키로 변환
예를 들어, 서브키의 첫 번째 비트는 C와 D의 k번째(on table) 비트가 됨