반응형 Programming35 파이썬 Crypto 모듈 설치 Python 암호화 프로그래밍 준비하기 파이썬에서 암호화 알고리즘 DES(DES3)나 AES, 해시함수 MD4,5 SHA를 이용하기 위해서는 Crypto 모듈이 필요합니다. Crypto 모듈은 기본으로 설치되어있는 모듈이 아니므로 모듈을 설치해야 합니다. linux$리눅스환경 windows>윈도우환경 0. 윈도우의 경우 먼저 pip를 설치하여야 합니다. bootstrap.pypa.io/get-pip.py windows>python get-pip.py 1. 먼저 파이썬을 통해 pip를 업그레이드합니다. linux$python -m pip install --upgrade pip windows>python -m pip install --upgrade pip 2. 다음으로 crypto 모듈을 설치합니다. lin.. 2021. 5. 14. Socket을 닫은 뒤 바로 쓸 수 없는 이유 socket 관련 예제를 진해하다 보면 연결을 끊고 바로 같은 PORT를 이용하는 경우가 잦을 것이다. 그럴 때마다 소켓이 정상적으로 동작하지 않는다. 이것은 TCP 특성상의 이유로 정상적인 현상이다. TCP의 특성에 의한 시스템적으로 막혀 있는 것이다. TCP이해 TCP에서는 신뢰성, 단편화등 많은 기능을 수행하기 위해 3-way handshaking 3.3/4 연결 종료를 수행한다. 결과적으로는 신뢰성있는 통신을 하기 위해서 이 기법을 사용한다. TCP에서는 세션 관리를 한다. 이는 신뢰성 있는 연결 상태를 확립하기 위해 존재하는 TCP의 특성이다. 이로 인해 반대로 취약점이 있기도 하나 신뢰성있는 통신을 하기 위한 기능이다. 주제처럼 세션을 끊을 때 이 현상이 발생한다. 위와 같이 먼저 FIN을 요.. 2021. 5. 4. [c/c++] 구조체, 공용체 struct, union 구조체 Struct 구조체는 여러 개의 변수 및 자료형을 묶어 정의하는 새로운 자료형이다. 자주 쓰면서 연관되는 자료형을 묶으려고 할 때 구조체를 사용하면 매우 유용하다 마치 우리가 사용하던 char, int 형을 쓰듯이 비슷한 것이다. 배열 역시 사용 가능하다. struct person{ char name[30]; char birthday[8]; int age; } 위의 예제와 같이 구조체 정의는 위와 같고 구조체 선언은 다음과 같다. struct [구조체 이름] [구조체 변수 이름]; struct person p1; 그런데 이대로면 구조체에 있는 멤버를 접근할 방법이 없다. 구조체 멤버에 접근하기 위해서 '.' 연산자를 사용한다. person.name; 구조체 포인터 구조체 포인터는 조금 다른 것이 .. 2021. 5. 2. [C 소켓프로그래밍] TCP 소켓 동작원리 Tcp의 내용 설명 codedatasotrage.tistory.com/18 TCP 상태 전이도 서버측과 클라이언트 측 관점으로 나눈 TCP 상태 전이도이다. TCP의 신뢰성 보장을 위한 기능중 하나이다. 소켓의 종료는 누가 먼저 종료 요청을 보내느냐의 따라 달라지며 먼저 자신이 닫았을 경우 ACK 패킷을 송신함을 끝으로 TIME_OUT 상태에서 대기하다 소켓이 종료된다. 이 종료 시간은 커널에서 설정이 가능하다. 소켓 동작 원리 연결 과정 1. SYN 패킷 전송 단계 TCP 헤더의 SYN 비트를 1로 설정하여 패킷을 송신한다. 처음 SYN 패킷은 ISN(Init Seq Num)를 SYN 필드에 기록하여 전송한다. 보안상의 이유로 ISN을 임의의 숫자를 사용하나 0도 자주 사용한다. 2. SYN, ACK .. 2021. 4. 3. C++ 오버로딩과 연산자 오버로딩 오버로딩 C에서 C++ 넘어오면서 생긴 기능중 하나이다. 함수를 같은 이름응로 비슷한 기능임에도 불구하고 C언어에서는 이름을 다르게 해야한다. C언어에서는 동일한 이름의 함수가 정의되어 있으면 컴파일러가 오류를 발생시킨다. //error_overload.c #include void func(int n); void func(int n,int e); int main() { func(1); func(2,3); return 0; } void func(int n){ printf("%d\n",n); } void func(int n,int e){ printf("%d %d\n",n,e); } 위 사진처럼 C언어는 에러를 발생시킨다. C++은 함수 호출 시 전달되는 인자를 통해서 함수를 구분하기 때문에 인수 형태가 다르.. 2021. 3. 20. [C/C++/소켓프로그래밍] Socket이란? 소켓 Socket 다른 원거리의 컴퓨터와 통신하기 위해 응용프로그램에서 소켓을 사용해야 한다. 소켓은 OS API를 이용해 소켓을 열며 OS마다 조금씩 다른 부분이 있다. 여기서는 리눅스 소켓을 사용한다. TCP/UDP를 이용해서 자료를 전송하려면 소켓을 생성, 운영체제에서 제공하는 소켓 API를 사용한다. 소켓 기술자를 받아와 통신을 시작한다. 소켓을 여는 과정 소켓은 위와 같은 과정을 거치며 TCP/UDP를 기반으로한 전송 계층 함수이다. TCP/UDP tcp는 연결 지향형 프로토콜로 안정성과 신뢰성을 보장한다. 수용가능한 자료만큼 전송하고 흐름제어를 한다. 그만큼 udp보다는 느리지만 신뢰성과 안정성이 보장된 프로토콜이다. udp는 비연결 지향형 프로토콜로 속도는 tcp에 비해서 빠르나 신뢰성이 떨.. 2021. 3. 13. 이전 1 2 3 4 5 6 다음 반응형