Loading...
8비트 평문 p와 10비트 키 k로 S-DES를 계산한다. 표의 위치 번호는 모두 왼쪽부터 0번이고, 출력의 j번 비트는 입력의 table[j]번 비트에서 가져온다.
P10 = 2 4 1 6 3 9 0 8 7 5
P8 = 5 2 6 3 7 4 9 8
IP = 1 5 2 0 3 7 4 6
EP = 3 0 1 2 1 2 3 0
P4 = 1 3 2 0
IP의 역순열 = 3 0 2 4 6 1 7 5
S-box는 다음과 같다. 4비트 b0b1b2b3에서 바깥 두 비트 b0b3이 행, 안쪽 두 비트 b1b2가 열이다.
S0 = 1 0 3 2 / 3 2 1 0 / 0 2 1 3 / 3 1 3 2
S1 = 0 1 2 3 / 2 0 1 3 / 3 0 1 0 / 2 1 0 3
키 생성은 P10, 5비트 두 부분을 각각 왼쪽으로 한 칸 순환 이동, P8로 K1을 만들고, 그 상태에서 두 칸 더 순환 이동해 P8로 K2를 만든다. 암호화는 IP, K1 라운드, 양쪽 4비트 교환, K2 라운드, IP의 역순열 순서이다. 한 라운드는 오른쪽 4비트에 EP를 적용해 라운드 키와 XOR하고, S0과 S1을 거쳐 P4를 적용한 뒤 왼쪽 4비트와 XOR한다. 복호화는 같은 절차에 K2, K1 순서로 키를 쓴다.
첫째 줄에 정수 p와 k가 공백으로 구분되어 주어진다.
K1, K2, 암호문, 암호문을 복호화한 값을 각각 8자리 이진수로 한 줄에 하나씩 출력한다. 앞의 0도 출력한다.
0≤p≤255, 0≤k≤1023
입력
189 642
출력
10100100
01000011
01110101
10111101