전체 글

푸더기의 다사다난한 블로그입니다
카이사르 암호 (Caesar Cipher) 모든 문자에 대해, 아스키코드 상에서 특정 수만큼 더해서 암호화 알파벳이 26개기 때문에, 26번만에 해독될 수 있다. (브루트포스) 모노알파벳 암호 (Monoalphabetic Cipher) 각각의 알파벳이 랜덤한 알파벳으로 변환되어 암호화 브루트포스 방식으로 해독하려면 26! 번으로 해독된다. 하지만 영어에서, 가장 많이 나오는 문자가 e이고, 다음이 t, 다음이 a ... 인 점, 그리고 2, 3개의 알파벳이 연속하여 나오는 빈도 테이블을 이용하여 암호화 문자열의 알파벳 빈도를 구하면 해독될 수 있다. 폴리알파벳 암호 (Polyalphabetic Cipher) 암호화하는 동안 여러 알파벳 대치 방식을 사용한다. 문자 빈도를 변조하기 때문에 해독하기 어렵다...
메이플스토리 월드 슈퍼 헤커톤! 줄여서 메커톤이라 부르기로 했습니다. 메이플 IP로 해커톤을 연다고? 한참 게임 개발에 관심 갖고 있던 8월의 푸더기씨... 인생의 절반 이상을 함께한 메이플스토리의 IP로 해커톤을 연다는 소식에 참가 접수를 참을 수 없었습니다. 접수 기간에는 몰랐지만 메이플스토리와 메이플스토리 월드는 아주 다른 것이더군요! 그럼에도 불구하고 메이플스토리는 메이플스토리. 귀여운 엔티티 캐릭터들로 만들어나가는 게임 개발! 지금 생각해도 참가하기 참 잘한 것 같습니다. 팀매칭 및 교육 기간 먼저 팀매칭은 기간동안 직접 팀이나 팀원을 구해서 만들어오거나, 만들지 못했다면 랜덤팀원을 배정받는 방식으로 진행됐어요! 저는 합격자 누락 이슈로 늦게 참가하게 됐는데 같은 사정을 가진 학교 선배 영훈님와..
전역하고 보니 마침 귀여운 대회를 하네? 사실 전역은 아니고 말출을 22년도 7월 초에 나왔습니다! 나온 김에 뭐 할거 없나... 하며 찾아보던 중 (사실 쉬는게 제일이였던거 같긴 합니다) 학교에서 귀여운 대회를 열어주더라구요! 게임 개발 대회에 파이썬이라니 이렇게 뽀짝할 수가 없지 않나요? 그래서 관심을 갖게 됐습니다 ㅎㅎ 팀원들과의 만남 원래는 혼자 하려고 했습니다. 딱히 수상 목적도 아니였고 그냥 심심해서 참가한거였으니까요! 그런데 마침 학교 친구와 후배들이 최대 인원에서 딱 한 자리를 남겨두고 팀을 짜뒀더군요. 이왕 하는거 같이 하면 재밌을테고 열정도 생기고 할테니 같이 하게 됐습니다. 돌이켜보면 태어날 때 개발 한스푼에 기획 한꼬집 들어간 제게 좋은 선택이였던거 같습니다. 후회되는 단 한 가지 ..
먼저 암호학에서 쓰이는 기본 용어부터 살펴보자. plaintext 평문 cipertext 암호문 cipher 알고리즘 key 비밀번호 encipher (encrypt) 암호화 decipher (decrypt) 복호화 cryptography 암호학 cryptanalysis key를 모르는 상태에서 key를 알아내는 것 cryptology cryptography + cryptanalysis 암호학이란, 암호화/복호화를 시키는 것 뿐만 아닌 key를 알아내는 것까지 포함한 cryptology를 알아가는 학문이 되겠다. 암호화와 복호화는 위와 같이 진행된다. 평문 X와 암호문 Y, 키값 K가 있을 때, 암호화 알고리즘 E에 K, X를 대입시키면 암호문 Y가 반환된다. 반대로 복호화 알고리즘 D에 Y와 K를 대입..
Entity Component System, 이하 ECS는 이름 그대로 Entity, Component, System으로 구성되고, 추가로 World라는 개념이 있다. Component : 데이터를 저장하는 역할 Entity : 데이터 저장 X, unique한 index를 가진다. System : 행동 (데이터를 변형시킨다) World : Component와 System이 저장돼있음 World는 매 틱마다 System들을 실행한다. 각 System에 정의되어 있는 함수에서 Component를 수정하고, 그 Component 개체들을 가리키는 인덱스가 Entity이다. 하나의 Entity에는 여러 개의 Component가 들어갈 수 있고, Entity 간에는 부모 자식 관계를 맺을 수 있다. 위 예시에서는..
Page table : virtual page number : physical page number - virtual page number를 index로 가진다. - 대응하는 physical page number를 가지고 있다. - valid bit도 가지고 있고, 이가 1이면 main memory 에 page가 있는 것이다. virtual - physical address 변환에서 page offset은 변경되지 않는다. page table은 main memory에 유지된다. 프로세서는 page table이 main memory에서 어딨는지 위치를 알고 있다. (page table register) virtual address가 주어진 memory request이 있다. 1. 이 request은 pag..
How to Locate a Block in the Cache? - direct mapping cache에서는 index를 찾고, index의 valid bit와 tag를 확인한다. - set associative cache에서는 set을 찾고, 해당 set 내의 모든 블록에 대해 valid bit와 tag를 확인한다. N-way associtaive cache에서는 set 내의 n개의 블록을 비교해야 한다. 예를 들어, 1024개의 1word block으로 구성된 4-way set associative cache는, 1 word block의 byte offset에 2bit, 1024/4 (256=2^8)에 8bit, tag에는 22bit를 할당한다. 만약 miss가 발생한다면, 요청한 데이터 블록이 캐..
direct mapped cache : 블록이 캐시 내에서 정확히 하나의 위치에 배치될 수 있다. set associative cache : 블록이 캐시 내의 고정된 개수의 위치에 배치될 수 있다. - 데이터의 n-way set associative cache는 데이터에 대해 n개의 위치를 갖는 것을 의미한다. - 2-way의 경우, 8개의 캐시블록은 4개의 집합으로 그룹화된다. - set number = address % (캐시의 set 개수) - 데이터가 속해있을 수 있는 set에 대해 모든 tag를 조사한다. fully associative cache : 블록이 캐시 내의 어느 위치에든 배치될 수 있다. - 8개의 캐시블록에 대해 하나의 집합을 가진 8-way set associate로 간주할 수 ..
푸더기
푸더기와 푸닥푸닥