반응형 IT Computer73 파이썬 리스트와 리스트 활용하기 파이썬도 타 언어들과 같이 배열이 존재합니다. 단순 배열이기보단 상위 레벨 언어답게 다양한 기능을 제공합니다. 리스트 기본 리스트의 생성은 직접 리스트 값을 넣거나 꺽쇠로 리스트를 선언 혹은 리스트 생성자로 직접 리스트를 선언할 수 있습니다. li=[1,2,3,4,5] li2=[] li3=list() 리스트에 요소를 추가할 때는 append() 메서드를 사용합니다. li.append(1) 반대로 삭제는 remove()를 사용합니다. 인덱스 list1=[1,2,3,4,5] list1의 예로 인덱스는 0부터 시작합니다. 때문에 list1[0] : 1입니다. 해당 인덱스는 0~4 범위를 가지게 됩니다. 파이썬에서는 인덱스에서 음수도 다룰 수 있습니다. 끝 요소 list1[4] : 5부터 -1로 시작해 앞으로 .. 2021. 8. 5. 공개키 암호, 비대칭키 암호화 RSA 공개키 암호화 (비대칭키 암호화) 공개키 암호는 비대칭 암호화라고도 하며 대칭키 암호화를 할 때 키 전달 문제를 해결하기 위해 개발되기 시작하였다. 개인키로 암호화하면 공개키로 복호화하고 공개키로 암호화하면 또 그 반대가 되는 방식이다. 공개키 암호화 알고리즘으로 DH, RSA, ECDH등이 있다. 공개키 암호화의 원리로는 소인수 분해, 이산 로그 문제, 타원 곡선의 어려움을 이용하여 암호화를 수행한다. 암호화를 진행한 하나의 키를 알고 있어도 복호화에 필요한 키를 알아내는데 굉장히 많은 연산이 필요하다. 수준급 분산 클러스터 시스템을 쓴다 하더라도 하루 이상이 소모된다. 공개키 암호화를 이용하여 암호화 통신을 하기에는 계산이 너무 복잡하여 매우 비효율적이다. 때문에 대칭키 암호화와 동시에 사용하여 대칭.. 2021. 7. 27. 파이썬 AES 암호화 파일 예제 파이썬 AES 파일 암호화 AES 암호는 대칭키 암호화로 현재 대중적으로 사용되는 암호화 방식 중 하나이다. 여러 암호화 모드를 적용할 수 있다. Python에서는 AES를 사용하기 위해서 pycrypto 모듈을 설치해야 한다. 리눅스를 기준으로 'pip install pycryptodomex'를 명령하면 설치가 진행된다. 사용 전 SHA 해시를 사용해 초기화 벡터와 키를 sha로 해싱 후 키로 사용할 것이다. 해시는 파이썬 자체로 hashlib 있으나 pycrypto를 이용해 사용할 것이다. 해시 설명 hash는 일종의 대응 함수이다. 해시는 빠른 검색을 위해 사용되었고 이후 역상 저항성을 이용해 암호 및 보안에도 이용된다. 주로 MD, SHA 계열이 있고 SHA는 버전에 따라서 알고리즘이 다른 경우가.. 2021. 7. 23. C/C++ 메모리 복사 memcpy 함수 memcpy란 특정 메모리를 다뤄 복사하는 함수이다. 헤더 파일을 보면 문자열 관련 함수로 보일 수 있으나 그것보다 더 범용성이 넓다. memory copy의 약자이며 지정한 메모리의 내용을 다른 곳으로 복사하기 위해 사용한다. 깊은 복사를 사용하여 복사를 진행한다. 기본 함수 및 인자 void* memcpy(void* dst, void* src, size_t num) string.h 헤더 파일을 포함해야 하며 memory.h에도 정의되어있다. c++에서는 헤더 파일을 포함하면 된다. dst : 복사받는 메모리를 가리키는 포인터 src : 복사하려는 원은 메로리를 가리키는 포인터 num : 복사할 바이트 수 성공 시 dst 포인터를 반환하며 실패 시 NULL을 반환한다. memcpy 함수 사용 memcp.. 2021. 7. 16. C/C++ memset() 함수 memset함수? memset 함수는 메모리의 시작점부터 지정한 범위를 특정한 문자로 지정하는 함수이다. 함수 뜻 그대로 memory set이다. 기본 함수 및 인자 void* memset(void* str, int value, size_t size); str : 설정하려는 문자열의 시작 주소 value: 초기화하려는 값, unsigned char로 변환하기 때문에 문자 size : 변환할 만큼의 길이, 자료형의 배수로 입력하고 배수만큼 초기화된다. 헤더 파일은 에 선언되어 있으며 에도 정의되어있다. C++에서는 을 사용한다. memset함수 사용 memset함수는 할당된 특정 메모리 공간을 특정한 값으로 초기화하거나 어떠한 문자열을 특정 값으로 초기화하기 위해 사용된다. memset()은 성공 시 첫 .. 2021. 7. 11. Segmentation Fault 세그멘테이션 오류 (Core dump) Segmentaiton Fault 세그멘테이션 오류 흔히 포인터 관련 오류로 쉽게 접하고 사실은 메모리 관련 오류이다. 흔히 리눅스, 유닉스 계열에서 프로그래밍을 하다 보면 (Segmentaion Fault) 세그멘테이션 오류(Core dumped)라는 오류를 종종 보았을 것이다. 이는 메모리 보호 기법에 의해 발생한 오류로 허가되지 않은 메모리의 접근을 방지하기 위해서이다. MS의 윈도우에서는 예외처리를 하여 다양한 오류 상황에 대처하도록 설계되어있다. 그러나 UNIX 계열에는 단지 허가되지 않은 메모리의 접근을 에러 처리할 뿐이다. 그래서 오류를 찾기도 조금 더 어렵고 어디서 발생했는지 모르는 경우도 발생한다. 메모리 관리가 프로그래머에게 주어진 C/C++에서 발생한다. core dump는 메모리가 .. 2021. 7. 5. 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음 반응형