전체 글(17)
-
DES 알고리즘을 구현 해보자. (c++, 코드 첨부)
( s-box, permutation 등의 테이블은 전체 코드에 나와있습니다. ) DES 알고리즘이란 Data Encrytion Standard의 약자로 1975년 IBM에서 개발하고 1979년에 미국 NIST가 국가표준 암호 알고리즘으로 지정한 대칭키 알고리즘이다. DES알고리즘은 블록 사이퍼 방법을 사용한다. 그래서 전해야 할 정보를 블록 단위(64비트)로 끊고 암호화하여 전송한다. DES 알고리즘은 아래 그림과 같이 동작한다. 저기 빨간 DES 알고리즘은 아래와 같이 동작한다. initial permutation은 64비트의 문자열을 테이블에 맞게 섞어주는 동작이다.(Inverse initial permutation 도 마찬가지 이다.) 또한 위 그림에서의 Round의 동작 방식과 그 Round..
2025.10.09 -
오픈 소스 awesome-devblog 에 기여하기
이 글에서는 오픈 소스 awesome-devblog에 기여하는 법을 설명한다. 깃허브의 awesome-devblog는 국내 개발자 블로그를 모아 놓은 Repository 이다. 기여하기에 앞서 기여 시 주의 점 1. 이름 순으로 정렬된 위치에 본인 작성 내용 추가하기 2. 블로그 뿐만 아니라 RSS도 함께 등록하기 - rss는 본인의 블로그 주소 뒤에 /rss를 붙이면 된다. -> (예시) https://주소.com/rss 3. 스펨에 취약한 이메일은 등록하지 않기 4. awesome-devblog 사이트에 반영되기 까지 시간이 걸릴 수 있다. 개요와 주의점에 대해서 확인 후 시작한다. 1. awesome-devblog/awesome-devblog 에 접속 https://github.com/awesome..
2023.06.13 -
colab환경에서 opencv를 활용한 배경제거 실습
이 글에서는 주어진 이미지의 전경 객체를 남기고 그 외의 배경을 제거하는 실습을 진행한다. 이 글에서 배경제거를 위한 동작의 순서는 다음과 같다. 1. Low - pass filtering(중간값 필터) : 잡음을 제거하고 성공적인 마스크 이미지를 만들기 위함 2. 히스토그램 스트레칭 : 이미지 전체 픽셀 값을 넓게 퍼트려 임계값을 적용시킬 때 좀 더 나은 결과를 보기 위함 3. 임계값을 적용 : 마스크 이미지를 만들기 위한 흰 색, 검은 색으로만 이루어진 이진 이미지를 만들어 낸다. - 여기서 사용된 이미지는 전경 객체의 밝은 부분과 어두운 부분의 픽셀 값 사이의 값을 가진 배경이 있어서 임계값을 다르게 하여 2번 적용시켜 전경객체의 모양에 맞는 마스크 이미지를 생성하였다. 4. 두 임계값을 적용한 결..
2023.06.11 -
합병 정렬 알고리즘 구현 (c++)
합병 정렬 알고리즘이란? 합병 정렬은 입력을 2개의 부분 문제로 분할해 나간다. 이 동작을 더 이상 나눌 수 없을 때 까지 재귀적으로 하게 된다. 더 이상 나눌 수 없게 된 문제를 정렬해서 올바른 자리에 위치시킨다. 그림으로 설명하면 이런 과정을 거치면서 동작하는 정렬 알고리즘을 합병 정렬 알고리즘이라고 한다. 전체 코드 #include #define SIZE 8 // 배열 사이즈 선언 using namespace std; // 숫자를 새로운 공간에 할당하는 merge함수 void merge(int array[], int start, int new_Index, int end) { int new_Array[SIZE]; // 새로운 배열 선언 int sta = start, mid = new_Index + 1..
2023.06.11 -
집합 커버 알고리즘 구현 (c언어)
집합 커버(Set Cover) 문제란 n개의 원소를 가진 집합 U = {0,1,2,…n-1} 가 있다고 한다. U의 부분집합들을 원소로 하는 집합 F(Power Set)가 주어지면, F 를 최소한으로 선택하여 집합 U를 커버하면 해결되는 문제이다. 좀 더 쉽게 설명하면 U = {1,2,3,4} 일 때 F = {{1}, {2}, {3}, {4}, {1, 4}, {1, 2, 4}, {1, 3, 4}} 이다. 그러면 여기서 {1}, {2}, {3}, [4} 를 선택하면 집합 U를 커버할 수가 있다. 또 {3}, {1, 2, 4} 이런 형태로도 집합 U를 커버할 수가 있다. 이 문제는 Greedy Algorithm 으로는 해결할 수 없는 문제이다. 이 문제를 해결하는 알고리즘을 적용시켜보기 위하여 아래의 예제를..
2023.06.11 -
lseek를 사용한 대용량 더미 파일 생성(c, linux)
이 글에서는 lseek를 사용하여 대용량 파일을 생성하는 프로그램을 만든다. 리눅스에서는 fallocate 명령어와 dd 명령어를 사용하여 간단하게 큰 크기의 파일을 만들 수 있다. 그러나 이 글에서는 입력받은 이름의 파일의 파일 디스크립터를 생성하고, 해당 파일의 파일 디스크립터를 lseek()함수를 이용하여 위치를 이동시켜서 큰 크기의 파일을 만든다. 코드 (아무 내용이 없는 파일 사이즈가 10000bytes인 파일 만들기) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 8 int main(int argc, char* argv[]){ 9 int fd; 10 char buf[1]; 11 12 if((fd=open(argv[1],..
2023.06.11