본문 바로가기

전체 글412

공개키 대칭키 암호화 기법 # 대칭키 알고리즘 (=비공개키 알고리즘) - 정의 : 암호화와 복호화 각각을 "똑같은" 키를 이용해서 한다는 의미에서 "대칭키" 보안기법이라 한다. - 키의 갯수 : 1개 1) 비밀 키 - 매커니즘 : 1) A 가 B 에게 정보를 전달하고 싶을때 2) A 가 가진 비밀키를 이용해서 암호화를 한 뒤 3) B 에게 A 의 비밀키를 전달한다 4) B 는 전달받은 비밀키를 이용해서 복호화를 한다 > 쉽게 말하자면, 자전거를 전달하고 싶을때, a 의 모양과 일치하는 자물쇠로 자전거를 잠근 뒤 전달하고싶은 사람에게 해당 자물쇠와 맞는 a의 열쇠를 전달한다 > 자물쇠와 열쇠를 동시에 전달하는 기법이라고 보면 제일 쉽다 - 의의 : 1) 암호학의 시초. 초기버전 2) 암호화, 전달, 복호화 과정을 모두 고려했을때, .. 2020. 3. 9.
RSA 알고리즘 - 공개키 암호화 방식 # RSA 알고리즘 - 동작 과정 1) 공개키 = (n, e), 개인키 = (n, d)> 이 두 가지를 만들어야 한다 2) n 구하기 - 두 수 p, q 를 갖고있다고 하자 - n = p x q 이다 3) theta( n ) = (p-1) x (q-1) 를 만든다> e 를 구하기 위한 과정 4) 1 이걸 만족하는 e 를 구해서, n 과 함께 공개키를 만들때 활용한다 5) (e x d) mod theta( n ) = 1 을 만족하는 d 를 구한다> 이걸 만족하는 d 를 구해서, n 과 함께 개인키를 만들때 활용한다 - 실제 암호화 과정 1) 원래 정보 = M 이라 하자 2) 공개키인 (n, e) 를 이용해서 암호화 하자> C = M^e mod.. 2020. 3. 9.
블록체인 해킹 사례 # 비트코인 해킹사례 1. 비트코인 채굴자 악성코드 - 원리 : 1) 채굴을 위해선, 여러 사람들이 해싱 작업을 계속 수행해야 한다 2) 경쟁자가 너무 많을 경우엔, 내 블록이 stale block 이 되어버릴 가능성이 높아진다! 3) 즉, 다른 사람과의 경쟁 자체를 줄여야 내가 블록을 얻게될 가능성이 높아진다 4) 따라서, 블록을 채굴하려는 사람들에게 악성코드를 심어놓자!> 그럴 경우, 채굴하다가 악성코드에 의해 아예 채굴 자체가 불가능하게 된다> 비유하자면, 전교 2등이 전교 1등을 하기 위해 전교 1등을 처단(?) 해버리는거랑 똑같다 2. 코인 지갑 해킹 - 원리 : 1) 공개키 암호화방식인 블록체인이기에, 각각의 사람들은 본인의 블록에 맞는 개인키를 소지하고 있다 2) 이 개인키들을 모아놓고 관리.. 2020. 3. 8.
1949 등산로 조성 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109#include #include #include using namespace std; int width, cut_max;int rst_path;int mountain[10][10];int dx[4] = { 0, 0, -1, 1 };int dy[4] = { -1, 1, 0, 0 };int flag[10][10];vecto.. 2020. 3. 7.
해결) 5653 줄기세포 배양 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139#include #include #include #include using namespace std; // 변수int height, width, total_ti.. 2020. 3. 7.
2382 미생물 격리 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155#include #include #include #include using.. 2020. 3. 6.
Selenium 웹크롤링 기본 1234567from selenium import webdriver driver = webdriver.Chrome("C:\\Users\\tryot\\Downloads\\chromedriver.exe") driver.get("http://www.naver.com") driver.find_element_by_xpath('//*[@id="snb_wrap"]/ul/li[2]/a/img').click()cs 마우스를 사용하지 않아도 자동으로 웹페이지를 다룰 수 있게 해준다 G매크로도 이런 원리로 작동하는걸까? 그래서 실습을 해봤다 12345678import time for i in range(0, 5): time.sleep(1) driver.find_element_by_xpath('//*[@id="news_cas.. 2020. 3. 6.
마크업 언어와 타 언어 차이점 # 마크업 언어 vs 프로그래밍 언어 vs 데이터베이스 언어 1) 마크업 언어 : "표현하기 위한" 수단의 언어 -> 프로그래밍 언어처럼, 무언가를 "만들기 위함"이 아니다. 그저, ~라는 정보가 ~라는 속성을 갖고 있다는걸 "표시"하기 위한 언어다. -> 간단하게, 글 중간중간에 형광펜을 칠한거같은 느낌? 형광펜을 칠함으로서, 해당 부분의 내용을 이라는 태깅을 한 것과 마찬가지이므로 "마크업" 했다고 할 수 있다. 2) 프로그래밍 언어 : 말 그대로, "프로그램을 만들기 위한" 언어 -> 마크업 언어의 경우, "주어진" 데이터를 잘 분류해서 태깅하기 위함이라면, 프로그래밍 언어는 "데이터 자체를 생성할 수 있는" 프로그램을 만들어내는 언어라고 할 수 있다. (마크업 언어와는 포지션 자체가 아예 다르다... 2020. 3. 6.
2117 홈 방범 서비스 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687#include #include #include #include #include #include using namespace std; //static variableint cen_x = 40, cen_y = 40; // variableint width, pay;int tmp_home[100][100];int rst_cnt;vector home; // functionvoid initialize();void prote.. 2020. 3. 5.
4014 활주로 건설 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102#include #include #include using namespace std; int width, x_len;int way[30][30]; void initialize();int row_line(int y);int col_line(int x); int main() { int test; scanf("%d", &test); for (int t = 1; t 2020. 3. 4.
1953 탈주범 검거 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151#include #include #include #include using namespace s.. 2020. 3. 4.
2477 차량 정비소 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816.. 2020. 3. 4.