출처 : cryptocontest.kr/ Home - SEC연구소 | 암호분석경진대회 cryptocontest.kr 2020 암호경진대회 2번 문제입니다. 최적화를 통해 해당 암호화 알고리즘을 누가 더 빠르게 동작하도록 만드느냐하는 문제였습니다. 문제에서 요구하는 수정해야될 key_gen과 enc 함수는 다음과 같습니다. void key_gen(u8 *rnd, u8 *key) { u8 key_in[2]; u8 tmp1, tmp2; u16 *key_p; u16 con = 0x9ABC; key_in[0] = key[0]; key_in[1] = key[1]; key_p = (u16*) key_in; int i; for (i = 0; i < ROUND_NUM; i++) { if (i % 2 == 0) { key..
www.acmicpc.net/problem/15973 15973번: 두 박스 표준 입력으로 두 박스의 정보가 한 줄에 하나씩 주어진다. 각 박스의 정보는 왼쪽 아래 꼭짓점 좌표 (x1, y1)과 오른쪽 위 꼭짓점 좌표 (x2, y2)로 구성되는데 이들 좌푯값 x1, y1, x2, y2 (x1 < x2, y1 < y2) www.acmicpc.net 오랜만에 수학 문제를 풀고 싶어서 도전했지만 수학이라기보단 노가다 문제였습니다. 문제는 어렵지 않다. 두 박스가 한 점에서 만나는지 선으로 만나는지 교차하는지 (내부에 포함되는 것 포함) 만나지 않는지를 나누어 계산하면 됩니다. 상대적으로 정답률이 낮은 이유는 아마 여러 경우 중 놓친 것이 있거나 했기 때문일 것입니다. (나도 몇 번 틀렸다.) 구조체를 이용하여..
문제 출처 : cryptocontest.kr/ Home - SEC연구소 | 암호분석경진대회 cryptocontest.kr 1,2,3번은 일반부와 고등부 공통의 문제였습니다. 4,5번에 비해 상대적으로 쉽지만 참고 논문을 이해하는 것은 생각보다 쉽지 않은 문제입니다. 참고 논문 : eprint.iacr.org/2015/802.pdf 1. 문제 접근 : Hill cipher는 고전 암호로써, 행렬의 역연산이 쉽지 않음을 이용합니다. 예를 들어, 임을 계산하기는 쉽지만, 아래와 같이 행렬식 만으로는 어떤 행렬의 곱으로 이루어졌는지 알수 없습니다. (위와 같은 경우도 가능하기 때문에 K가 되는 2x2 행렬이 무엇인지 그리고 평문인 (1,2)를 구하는 것은 어렵다.) 이러한 hill cipher를 어떻게 하면 풀..
지난 8/31까지 진행되었던 암호경진대회 일반부에서 수상하였습니다. 문제 출처 : cryptocontest.kr/notice/?vid=2 공지사항 - SEC연구소 | 암호분석경진대회 cryptocontest.kr 비록 장려상이고 유명하지 않은 대회이지만 처음 참가한 대회에서 수상한 거면 개인적으로 아주 만족스러웠습니다. (처음에는 참가에 의의를 두자! 하고 했었다.) 블로그를 늦게 시작한 탓에 수상을 하였다는 것도 늦게 올렸습니다. 추후에 2020 암호경진대회 문제 풀이 글도 포스팅하겠습니다! 짧게 후기를 쓰면, 대학교 2학년 때 암호학이란 것이 알게 되었고, 이에 관심을 가지다 보니 프로그래밍 언어를 필수적으로 해야했습니다. 2학년 여름방학 때 처음으로 C언어란 것을 혼자 방에서 독학으로 했습니다. 수..
www.acmicpc.net/problem/2636 2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 전형적인 bfs 문제입니다. 문제에서 한 가지 까다로운 조건이 있다면, 치즈 내부의 공기에는 치즈가 녹지 않는다는 것입니다. 그렇기 위해 공기가 치즈 내부에 있는가 외부에 있는가를 기준으로 녹는 위치를 정해야합니다. 녹는 방법은 치즈 블럭을 기준으로 상하좌우에 치즈 외부의 공기가 있는가 없는가만 알면 됩니다. 그렇기 때문에 bfs를 2번 이용하여 치즈 블럭 구분과 외부 공기를 구하였습니다. (모서리 부분에는 무조건 치즈..