본문 바로가기

분류 전체보기

(75)
암호학 3주차 최대공약수(Greatest Common Divisor, GCD)는 둘 이상의 주어진 수들에 대하여 공약수, 즉 모든 주어진 수들의 공통의 약수인 수들 중에서 가장 큰 값을 의미한다. 유클리드 호제법이라고도 불리는 유클리드 알고리즘(Euclidean algorithm)은 소인수분해 과정 없이도 두 수의 최대공약수를 구할 수 있는 방법입니다. 서로소는 특별히 양의 정수 a,b의 최대공약수의 값이 1인 경우를 표현합니다. 합동은 두 정수 a,b를 각각 양의 정수 m으로 나눈 나머지가 동일할 경우, “a,b는 m에 대하여 합동” 이라고 표현합니다. 위의 표현은 다음과 같이 수식으로 작성할 수 있습니다. 합동 관계를 작성한 수식을 합동식(Congruence relation)이라고 부릅니다.합동식과 관련하여 암호학..
C언어 3주차 #define _CRT_SECURE_NO_WARNINGS #include int main(void){ int frac[2][2] = { 0 }; float max = 0; int count = 0; int count_r; count_r = count; scanf("%d %d", &frac[0][0], &frac[0][1]); scanf("%d %d", &frac[1][0], &frac[1][1]); float x = ((float)frac[0][0] / frac[1][0]) + ((float)frac[0][1] / frac[1][1]); if (x > max) { max = x; } for (int i = 0; i max) { max = x; count_r = count; } } print..
시스템 2주 x64 어셈블리 언어는 동사에 해당하는 명령어(Operation Code, Opcode)와 목적어에 해당하는 피연산자(Operand)로 구성됩니다.명령어들을 크게 분류하면 이렇습니다.  피연산자에는 3가지 종류가 올 수 있습니다. 상수, 레지스터, 메모리입니다. 메모리 피연산자는 []으로 둘러싸인 것으로 표현됩니다. 앞에 크기 지정자인 TYPE PTR이 추가될 수 있습니다. 타입에는 BYTE, WORD, DWORD, QWORD가 올 수 있으며 각각 1, 2, 4, 8바이트의 크기를 지정합니다.  데이터 이동 명령어는 어떤 값을 레지스터나 메모리에 옮기도록 지시한다. mov dst, src에 들어있는 값을 dst에 대입mov rdi, rsirsi의 값을 rdi에 대입mov QWORD PTR[rdi], rs..
웹해킹 2주 1.HTML injection이란? 공격자가 악의적인 목적으로 html태그를 삽입하는 공격이다. 악의적인 html태그를 삽입하여 원치 않은 내용을 보게 하거나 다른 사이트로 리다이렉션 하는 등의 공격을 한다. 반사기법과 저장기법으로 나누어진다. 반사기법은 URL에 HTML 태그를 삽입하는 것, 저장 기법은 HTML태그를 데이터베이스에 저장한다는 점에서 차이가 있다. 2.[low] 처음에 1과 1을 넣었을 때 그대로 1이 출력되는 걸 확인할 수 있습니다.그 뒤로 1을 넣었을 때 빨간색 / 사이에 1이 들어가 있는 것을 확인할 수 있었습니다. last name부분에 img src: http://[본인IP]/bWAPP/images/bee_1.png를 넣자 출력에 이미지가 아닌 img src: http://[본..
2주차 암호학 고전 암호는 컴퓨터와 같은 고성능 연산 장치가 발명되기 전, 비교적 간단한 기계와 손 등으로 암복호화를 수행하던 암호를 말한다.  고전 암호는 일반적으로 치환(Substitution)과 전치(Transposition)의 방법으로 설계된다.  단일 문자 치환 암호대표적인 예:카이사르 암호로, 카이사르 암호는 평문의 각 알파벳을 정해진 횟수만큼 다음 순서에 해당하는 알파벳으로 치환한다.사람 한 명이 한 글자에 대응되지만 규칙성이 없어서 암호문으로부터 평문을 유추할 수 없는 춤추는 인형 암호가 있다. 코드북을 이용한 단일 치환 암호는 현재도 종종 사용된다. 송신자와 수신자가 책을 정하고, 송신자가 책의 페이지 x와 단어의 인덱스 y를 보내면, 수신자는 책 x페이지의 y번째 단어를 확인하여 송신자의 메세지를 해..
C언어 2주차 #define _CRT_SECURE_NO_WARNINGS #include int main(void){ int min = 100; int total = 0; int a; int button = 0; for (int i = 0; i 1.for문을 이용하여 숫자를 7번 입력받게 하고, 받을 때 마다 홀수인지와 최솟값인지의 여부를 고려한다.2.만약 홀수가 하나도 안 나올 경우를 고려하여 button이라는 변수를 만든다.3.button이 0일 때는 홀수가 입력되지 않았고, 1일 때는 홀수가 입력된 것이다.4.결과를 button에 따라 출력한다. #define _CRT_SECURE_NO_WARNINGS #include int main(void){ int cook[5][5] = { 0 }; int num = 0; i..
시스템 1주 폰 노이만초기 컴퓨터 과학자 중 한 명이다. 노이만은 컴퓨터에 연산, 제어, 저장의 세 가지 핵심 기능이 필요하다고 생각했다. 근대의 컴퓨터는 연산과 제어를 위한 중앙처리장치, 저장을 위한 기억 장치, 장치간에 데이터나 제어 신호를 교환할 수 있도록 버스라는 전자 통로를 사용한다.  중앙처리장치CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 컴퓨터의 두뇌이다.   기억장치기억장치는 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용되며, 용도에 따라 주기억장치와 보조기억장치로 분류된다. 주기억장치로는 RAM이 있으며, 보조기억장치는 하드 드라이브(HDD), SSD가 있다. 버스버스는 컴퓨터 부품과 부품 사이 또는 컴퓨터와 컴퓨터 사이에 신호를 전송하는 통로를 말한다.  명령어 집합 구조CP..
C언어 1차 #define _CRT_SECURE_NO_WARNINGS #include int main(void) { int max = 0; int index = 0; int total[9] = { 0 }; for (int i = 0; i max) { max = total[i]; index = i+1; } } printf("%d\n", max); printf("%d", index); return 0;} 1.max에 최댓값을 저장하고 index에 몇 번 째인지, 배열을 사용하여 순서대로 값을 받습니다. 2.for문을 통해 9번 값을 받음과 동시에 최댓값인지 비교합니다.3.마지막으로 최댓값과 몇 번 번째인지를 출력합니다.   #define _CRT_SECURE_NO_WARNINGS #include int mai..
암호학 1주차 암호학은 정수론, 대수학, 확률론 등 다양한 수학 이론에 기반합니다. 암호학의 핵심이 되는 연구 주제는 키 생성, 암호화, 그리고 복호화입니다.pycrpytodome를 설치해줍니다  소수를 판별해봅니다.  우분투에서 python을 실행할 때는 python3을 터미널에 입력합니다.  segemath의 설치를 완료합니다sagemath의 설치를 완료합니다. 중간에 apt_pkg오류가 나서 파이썬을 삭제 후 재설치했습니다.실행해봅니다tqdm을 이용한 곱셈을 사용해봅니
웹해킹 1주차 beebox를 다운로드한다  설치한다 ip주소를 확인한