분류 전체보기 53

주저리주저리 내가 아는 AES는 말이지...

·안녕하세요 주인장입니다. 바쁜 나날들을 보내다 문득 블로그가 생각나 들어와 봤어요. 스킨도 좀 바꿔보고 했는데 어떠신가요 저는 영 어색하네요. 이 말을 하려고 들어온건 아니고 갑자기 들어와본 블로그에 AES 관련 게시글이 너무 얼렁뚱땅 마무리된 것 같아서 제가 기억하는 AES를 추억할 겸... 함 적어보겠습니다. 틀린 부분은 스스로 고쳐나갈 예정이나 완전 박박 틀렸다 하는 부분을 발견하시면 댓글 주세요. 1. AES의 구조 SPN 구조라고 하는 치환-대치(맞나?) 구조를 하고 있습니다. 한 라운드는 크게 4가지 순서로 구성이 되어있는데요. 다음과 같습니다. SubBytes ShiftRows MixColumns AddRoundKey 지금부터 이 4가지 과정을 하나씩 요약해보면, 2. SubBytes 보통..

블록 암호/AES 2022.08.30

[#1193 백준][Python] 분수찾기

문제 무한히 큰 배열에 다음과 같이 분수들이 적혀있다. 1/1 1/2 1/3 1/4 1/5 … 2/1 2/2 2/3 2/4 … … 3/1 3/2 3/3 … … … 4/1 4/2 … … … … 5/1 … … … … … … … … … … … 이와 같이 나열된 분수들을 1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수라고 하자. X가 주어졌을 때, X번째 분수를 구하는 프로그램을 작성하시오. 풀이 대각선으로 표를 떼어서 보게 되면 오른쪽 상단처럼 리스트로 묶을 수 있게 된다. 저 리스트를 보게 되면 몇가지 규칙을 찾을 수 있는데, 리스트 덩어리가 홀/짝에 따라 대각선 위로인지, 대각선 아래로인지 파악할 수 있고 그러면 자연스..

[#2775 백준][Python] 부녀회장이 될테야

문제 평소 반상회에 참석하는 것을 좋아하는 주희는 이번 기회에 부녀회장이 되고 싶어 각 층의 사람들을 불러 모아 반상회를 주최하려고 한다. 이 아파트에 거주를 하려면 조건이 있는데, “a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다” 는 계약 조항을 꼭 지키고 들어와야 한다. 아파트에 비어있는 집은 없고 모든 거주민들이 이 계약 조건을 지키고 왔다고 가정했을 때, 주어지는 양의 정수 k와 n에 대해 k층에 n호에는 몇 명이 살고 있는지 출력하라. 단, 아파트에는 0층부터 있고 각층에는 1호부터 있으며, 0층의 i호에는 i명이 산다. 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 ..

[백준 #2292][Python] 벌집

문제 위의 그림과 같이 육각형으로 이루어진 벌집이 있다. 그림에서 보는 바와 같이 중앙의 방 1부터 시작해서 이웃하는 방에 돌아가면서 1씩 증가하는 번호를 주소로 매길 수 있다. 숫자 N이 주어졌을 때, 벌집의 중앙 1에서 N번 방까지 최소 개수의 방을 지나서 갈 때 몇 개의 방을 지나가는지(시작과 끝을 포함하여)를 계산하는 프로그램을 작성하시오. 예를 들면, 13까지는 3개, 58까지는 5개를 지난다. 풀이 벌집을 들여다보면 규칙이 보인다. 육각형인 벌집의 모양에 따라 1부터 시작해서 6의 배수씩 누적되어 방의 개수(cnt)를 셀 수 있다. 여기서 주목해야 할건 6의 배수씩 "누적" 된다는 것인데 처음엔 누적은 모르고 그냥 6으로 나누고 몫과 나머지를 고려하여 코드를 짰더니 13까지 2개의 방만 지나간..

[AES] Key Expansion 키확장

* Cipher Key, 즉 K는 키스케줄key schedule로 만들어진 Key Expansion 과정을 거친다. * key expansion으로 총 Nb(Nr+1) words가 만들어진다. - 초기의 Nb words(입력셋), 각 Nr개의 라운드 마다 Nb의 키가 필요 * 4-byte words로 나열하여 [wi]로 표기된다. i의 범위 : 0 ≤ i < Nb(Nr + 1) * SubWord() : S-box 연산 함수 * RotWord() : a word [a0,a1,a2,a3]를 input으로 하고 cyclic연산을 한다. 즉 word [a1,a2,a3,a0]를 return하는 함수다. * Rcon[i] : The round constant word array. [x^(i-1), {00}, {00..

블록 암호/AES 2021.12.27