전체 글579 프로그래밍 언어의 구성 프로그래밍 언어의 구성 프로그래밍 언어의 구성 요소는 크게 구문(Syntax)과 의미론(Semantics)으로 나눌 수 있습니다. 구문은 프로그래밍 언어의 문법적인 부분으로, 프로그래밍 언어에서 올바른 문장을 구성하는 방법을 정의합니다. 이를 통해 프로그래밍 언어를 구성하는 단어, 구문 구조, 문장 등을 정의할 수 있습니다. 언어의 표현식, 문장 그리고 프로그램 단위의 형식 일반적으로 문맥 자유 문법으로 기술 의미론은 프로그래밍 언어의 의미적인 부분으로, 프로그래밍 언어에서 올바른 의미를 가지는 문장을 구성하는 방법을 정의합니다. 이를 통해 프로그래밍 언어에서 올바른 실행 결과를 얻을 수 있도록 문장의 의미를 정의합니다. 표현식, 문장, 프로그램 단위에 대한 의미 연산 의미론, 공리 의미론, 표기 의미론.. Computer Science/프로그래밍 언어론 2023. 4. 5. 블록 암호 기반 MAC(CMAC) 블록 암호 기반 MAC 블록 암호를 이용해서 MAC를 생성하는 몇 가지 방법에 대해서 알아보자 암호 - 기반 메시지 인증 코드(Cipher-based Message Authentication Code)(CMAC) 암호-기반 메시지 인증 코드(CMAC)의 생성 과정은 다음과 같습니다. 메시지 M을 n개의 블록으로 나눕니다. 각 블록을 M1, M2, …, Mn으로 표기합니다. CMAC 알고리즘에 사용할 대칭키 K와 부속키 K1을 설정합니다. K는 k 비트의 암호키이며, K1은 n 비트의 부속키입니다. CMAC 알고리즘에서 사용할 암호화 함수를 선택합니다. AES나 3DES 암호화 함수 중 하나를 선택하며, 이에 따라 블록 크기인 b도 결정됩니다. AES의 경우 b는 128비트, 3DES의 경우 b는 64비트.. Computer Science/Security 2023. 4. 4. HMAC HMAC HMAC(Hierarchical Message Authentication Code)은 키를 활용한 메시지 인증 방식으로, 메시지 무결성을 보호하는 데 사용됩니다. HMAC은 일반적으로 대칭키를 사용하며, 주어진 입력 메시지와 키를 이용하여 MAC(Message Authentication Code)을 생성합니다. HMAC은 다음과 같은 구성 요소를 사용하여 MAC을 생성합니다. 해시 함수 (Hash function) : SHA-1, SHA-256 등과 같은 해시 함수를 사용합니다. 내부 패딩 (Inner padding) : 0x36과 같은 내부 패딩 값을 사용하여 해시 함수를 적용하기 전 입력 메시지를 처리합니다. 외부 패딩 (Outer padding) : 0x5C와 같은 외부 패딩 값을 사용하여.. Computer Science/Security 2023. 4. 4. Scheme 기본 문법 Scheme 기본 문법 Scheme 언어의 특징은 아래와 같다 Simple syntax - 간단한 문법 Functional programming - 함수가 일급 객체 취급 받는다 Dynamic typing - 동적 타입 지원 Tail recursion optimization - 꼬리 재귀 최적화 Basic Data Type s-expression은 symbolic expression의 약어로, Lisp 언어에서 모든 코드나 데이터를 나타내는 방식을 말합니다. 이는 리스트 구조를 이용한 트리 구조로 표현됩니다. 따라서 Lisp에서는 코드도 데이터와 마찬가지로 리스트 형태로 표현되어 처리됩니다. S-expression의 데이터 유형 Atom은 숫자, 심볼 등과 같은 단순한 데이터 유형을 나타냅니다. List.. Computer Science/프로그래밍 언어론 2023. 4. 4. 사운드엔지니어 (4) - 컴프레서 사용 방법 사운드 엔지니어 (3) - 컴프레서 사용 방법 컴프레서는 오디오 신호의 동적 범위를 제어하는 데 사용되는 오디오 처리 도구입니다. 컴프레서는 큰 음량의 파트를 줄이고 작은 음량의 파트를 향상시켜, 전체적인 음량의 일관성을 유지하고 오디오 믹스에서의 선명도를 향상시킵니다. 컴프레서 사용 방법 및 팁: Threshold(임계값) 설정 컴프레서가 작동하기 시작하는 음량 수준을 결정합니다. 너무 낮게 설정하면 모든 소리가 압축되어 자연스럽지 않게 들릴 수 있습니다. 반면, 너무 높게 설정하면 압축 효과가 거의 없어질 수 있습니다. 적절한 임계값을 설정하여 원하는 압축 효과를 얻어보세요. Ratio(비율) 설정 입력 신호가 임계값을 초과할 때 적용되는 압축 비율을 결정합니다. 높은 비율은 강한 압축을 의미하며, .. ETC/Sound(음향) 2023. 4. 4. Python 한글과 영어 예쁘게 정렬(포맷)하는 방법 Python 한글과 영어 예쁘게 정렬(포맷)하는 방법 Intro. 왜 띄어쓰기 제대로 했는데 포맷이 안맞는거지? product 별로 품목을 정렬해서 출력하려고 했더니 잘되지 않았다. 각 요소 별로 고정된 문자열을 배정하고, 입력 받은 값을 채운 후 나머지 값은 패딩으로 채운 후 출력하도록 했는데 말이다 그 이유는 내가 영어와 한글을 섞어 사용했기 때문에 글자 보폭이 달라서 발생한 문제였다. 해결 방법 class Product: def __init__(self, name: str, price: int, quantity: int) -> None: self.name = name self.price = price self.quantity = quantity def get_price(self) -> int: re.. ETC 2023. 4. 4. Pyenv 세팅 방법 Pyenv 세팅 방법 pyenv는 여러 버전의 Python을 관리할 수 있는 도구입니다. 개인적으로 파이썬을 가지고 노는 것을 좋아하므로, 여러 가지 프로젝트에서 범용성을 위해 pyenv를 자주 사용하게 됩니다 Pyenv 설치 과정 Apple Silicon M1 Mac에서 pyenv를 설치하고 사용하는 방법은 다음과 같습니다. Homebrew 설치 먼저 Homebrew 패키지 관리자를 설치해야 합니다. 이미 설치되어 있다면 이 단계를 건너뛰어도 됩니다. 터미널에서 다음 명령어를 실행하여 Homebrew를 설치합니다: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" pyenv 설치 H.. ETC 2023. 4. 4. 메시지 다이제스트 메시지 다이제스트 메시지 다이제스트(message digest)는 데이터 덩어리(예: 메시지, 파일)의 고유한 고정 길이의 해시 값입니다. 이 값은 원본 데이터의 요약된 형태로, 원본 데이터의 변경 없이 동일한 메시지 다이제스트를 생성합니다. 메시지 다이제스트는 암호학에서 해시 함수를 사용하여 생성되며, 이러한 해시 함수는 보안 및 암호화와 관련된 다양한 애플리케이션에서 사용됩니다. 메시지 다이제스트의 몇 가지 주요 특징과 용도는 다음과 같습니다: 데이터 무결성 데이터를 변경하면 메시지 다이제스트도 변경되므로, 전송된 데이터의 무결성을 검증할 수 있습니다. 메시지 다이제스트를 사용하여 원본 데이터가 변경되지 않았는지 확인할 수 있습니다. 고유성 원본 데이터에 대해 생성된 메시지 다이제스트는 고유하며, 다.. Computer Science/Security 2023. 4. 3. SHA 안전 해시 함수는 무엇인가 SHA 안전 해시 함수 최근 가장 널리 사용되는 해시 함수는 SHA(안전 해시 알고리즘)이다. 본 글에서는 SHA 512를 기준으로 해시 함수를 설명 할 것이다. SHA 512는 무엇인가 입력 메시지 크기 : 최대 길이가 2^128 비트 이하인 메시지 출력 : 512 비트 해시 처리 단위 : 1024 비트 블록 해시 과정 : 메시지부터 다이제스트까지 생성 과정 패딩 비트 붙이기 메시지 패딩은 메시지의 길이가 블록 크기(여기서는 1024비트)의 배수가 아닐 때 추가되는 비트를 말합니다. 이 패딩 비트는 비트 1로 시작하고, 나머지는 0으로 채워져 있습니다. 길이(length) 붙이기 SHA 알고리즘의 길이 붙이기 단계에서는 메시지의 원래 길이를 128 비트 정수로 나타내어 메시지 끝에 붙입니다. 이 때, .. Computer Science/Security 2023. 4. 3. 단순 해시 함수 단순 해시 함수 가장 간단한 형태의 해시 함수를 만드는 방법은 각 블록의 비트별 XOR을 하는 것입니다 단순 해시 함수 만드는 방법 단순 함수 생성 방정식은 위와 나온 것과 같다. 즉 각 비트를 미리 준비된 블록의 값에 XOR 함으로써 해시 함수를 생성하는 것이다. 각 비트의 자리별로 패리티를 계산함으로써 해시 함수를 생성하는 방법인데, 이를 세로 덧붙임 검사(vertical XOR)라고 한다. 이 방식은 메시지 블록을 32비트(4바이트) 단위로 분할하고, 각 단위별로 비트들을 XOR 연산하여 하나의 해시 값을 생성합니다. 이때, 메시지 블록의 크기가 해시 값의 크기보다 작을 경우에는 덧붙임 검사(padding)을 수행합니다. 이 과정에서 메시지 블록 마지막에 1비트를 추가하고, 남은 비트를 0으로 채워.. Computer Science/Security 2023. 4. 3. 안전 해시 함수 안전 해시 함수 일방향 해시 함수 혹은 안전 해시 함수는 메시지 인증과 디지털 서명에서 매우 중요한 함수이다. 안전 해시 함수는 암호학적으로 안전한 해시 함수로, 일방향성, 프리이미지 저항성, 충돌 저항성의 조건을 만족하고 보안성이 검증된 함수를 말합니다 해시 함수 요건 해시 함수의 목적은 파일 메시지 데이터 블록에 대한 fingerprint를 만드는 것이다. 메시지 인증에 사용하기 위해서 해시 함수 H는 다음과 같은 속성이 있어야 한다 H는 어떠한 크기의 데이터 블록에도 적용 될 수 있어야 한다. H는 일정한 길이의 출력을 생성해야 한다. H(x)는 어떤 x에 대해서도 계산이 쉬워야 하고, 하드웨어적이나 소프트웨어적으로 구현을 실제로 할 수 있어야 한다 일방향 성질(프리이미지 저항성) : H(x) = .. Computer Science/Security 2023. 4. 3. 서브넷 인터페이스 수와 프리픽스 계산하는 방법 서브넷 인터페이스 수와 프리픽스 계산하는 방법 네트워크 하향식 접근 4장 연습 문제 중 서브넷 인터페이스 수와 프리픽스를 계산하는 문제가 나옵니다 이해 대한 풀이와 함게 서브넷과 프리픽스 계산 방법을 다시 짚고 가겠습니다 본문의 문제 P8. 서브넷 1, 서브넷 2, 서브넷 3인 3개의 서브넷을 서로 연결하는 라우터를 생각해보자. 이 3개의 서브넷의 인터페이스 모두 프리픽스 22.31.17/24을 가져야 한다고 가정하자. 또한 서브넷 1은 62개 인터페이스를 지원하고, 서브넷 2는 106개의 인터페이스를 지원하고, 서브넷 3은 12개의 인터페이스를 지원한다고 가정하자. 이러한 조건에 만족시키는 3개의 네트워크 주소를(a.b.c.d/x의 형태로) 나타내라. 풀이 일반적인 네트워크에서는 게이트웨이를 고려해야 .. Computer Science/네트워크 2023. 4. 3. 이전 1 ··· 37 38 39 40 41 42 43 ··· 49 다음