전체 글 146

[Linux] LD_LIBRARY_PATH

LD_LIBRARY_PATH란? LD_LIBRARY_PATH는 리눅스에서 응용 프로그램이 공유 라이브러리를 참조할 때 확인하는 경로다. 응용 프로그램 구동에 필요한 라이브러리 경로는 LD_LIBRARY_PATH에 등록되어 있어야 한다. 리눅스에서는 대부분의 응용 프로그램이 .so확장자로 구성된 라이브러리를 동적으로 참조한다. LD라는 명칭은 dynamic LoaDer의 LD에서 따왔다고 한다. 결국 LD_LIBRARY_PATH은 '라이브러리 로드 경로' 정도로 이해할 수 있다. LD_LIBRARY_PATH 설정 방법 파일로 설정하기 .bash_profile 파일 오픈 LD_LIBRARY_PATH=${ LD_LIBRARY_PATH }:경로 ex) LD_LIBRARY_PATH=${ LD_LIBRARY_PAT..

Encryption 2023.10.06

[GCC] Static/Shared Library 생성 및 사용

라이브러리를 생성하기 위한 큰 그림 예시) 모듈 별로 작성하지 않고 하나의 파일로 이루어진 프로그램은 다음과 같다. #include int sum(int a, int b); int main(int argc, char **argv) { int value; value = sum(120, 199); printf("%d\n", value); } int sum(int a, int b) { return a+b; }​ sum함수를 모듈 형식으로 완전히 분리시켜 보기 위해서 3개의 파일이 만들어져야 한다. 1. sum함수의 선언이 들어 있는 include 파일 2. sum함수를 사용할 main 함수가 있는 C파일 3. sum함수가 정의되어 있는 C파일 include 파일은 아주 간단하게 만들 수 있다. include ..

Encryption 2023.10.06

Static Library와 Dynamic Library

라이브러리에 의존하는 프로그램은 시스템에 필요한 라이브러리가 설치되지 않으면 동작하지 않는다. 실제로 실행될 때는 라이브러리가 제공하는 코드와 링크되어야 프로그램 코드가 동작할 수 있다. 라이브러리는 오브젝트 코드와 결합하는 방법에 따라 정적(staitc) 라이브러리와 공유(shared) 라이브러리로 나뉜다. 공유(shared) 라이브러리는 다시 일반적인 동적 링크(Dynamic link) 라이브러리와 동적 로드(Dynamic load) 라이브러리로 나뉜다. 정적 라이브러리(Static Library)란? 개념 - 컴파일 단계에서 외부 함수나 루틴을 링크하는 방법 장점 - 컴파일 단계에서 코드가 링크되기 때문에, 런타임에서 빠르게 작동 단점 - 코드 자체가 프로그램 내부에 들어가게 되는데, 이 때문에 프..

Encryption 2023.10.06

[OpenSSL] File 암호화 및 복호화 (대칭키/encryption password)

대칭키 대칭키 생성 먼저 대칭키를 생성한다. openssl rand -base64 32 > yeonheekey.txt 32바이트 (256비트)의 무작위 키를 생성하고 "yeonheekey.txt" 파일에 저장. 이 키는 암호화와 복호화에 사용됨 파일 암호화 암호화하려는 파일과 생성한 대칭키를 사용하여 파일을 암호화. openssl enc -aes-256-cbc -salt -in original.txt -out encrypted.txt -pass file:yeonheekey.txt -aes-256-cbc : AES 알고리즘을 사용하여 256비트 대칭 암호화를 수행 -salt : 암호화에 솔트를 사용하여 보안을 강화 -in original.txt : 암호화할 원본 파일 -out encrypted.txt : ..

Encryption 2023.10.05

Hash와 Salt

단방향 해시 함수는 어떤 수학적 연산(또는 알고리즘)에 의해 원본 데이터를 매핑시켜 완전히 다른 암호화된 데이터로 변환시키는 것을 의미한다. 이 변환을 해시라고 하고, 해시에 의해 암호화된 데이터를 다이제스트(digest)라고 한다. 또한, 앞서 말했듯 해싱은 단방향이다. 한마디로 단방향 해시 함수는 다이제스트를 복호화, 즉 원본 데이터를 구할 수는 없어야 한다. 말 그대로 단방향성이다. 예시로 비밀번호 123456을 들어보자. 즉 원본메시지 123456을 해시 함수에 돌려서 다이제스트인 fs32a3xzz0을 생성하고 해당 데이터를 DB에 저장하는 것이다. 이렇게 저장된 다이제스트는 설령 DB가 털려도 단방향으로 해싱된 문자라 복호화할 수 없다. 이러한 단방향 해시 함수의 종류들은 매우 많으며 대표적으로..

Encryption 2023.10.05

해쉬 알고리즘(Hash Algorithm)

해쉬란? 해쉬는 임의의 크기를 가진 데이터를 고정된 크기로 변환시키는 것을 말한다. 즉, 해쉬 알고리즘은 해쉬를 하는 방법에 대해 절차적으로 명세한다. 이를 이용해 특정한 배열의 인덱스 위치나 위치를 입력하고자 하는 데이터의 값을 이용해 저장하거나 찾을 수 있다. 기존에 사용했던 자료 구조들은 탐색이나 삽입에 선형시간이 걸리기도 했던 것에 비해, 해쉬를 이용하면 즉시 저장하거나 찾고자 하는 위치를 참조할 수 있으므로 더욱 빠른 속도로 처리할 수 있다. 1. Direct Addressing Table Direct Addressing Table은 key-value쌍의 데이터를 배열에 저장할, key값을 직접적으로 배열의 인덱스로 사용하는 방법이다. 예를 들면 키 값이 400인 데이터가 있으면, 이는 배열의 ..

Encryption 2023.10.05

[Linux] 리눅스 필수 명령어 정리

💻 필수 명령어들 요약 ls : 현재 위치의 파일 목록 조회 cd : 디렉터리 이동 touch : 0바이트 파일 생성, 파일의 날짜와 시간을 수정 cp : 파일 복사 mv : 파일 이동 rm : 파일 삭제 cat : 파일의 내용을 화면에 출력, 리다이렉션 기호(">")를 사용하여 새로운 파일 생성 redirection : 화면의 출력 결과를 파일로 저장 alias : 자주 사용하는 명령어들을 별명으로 정의하여 쉽게 사용할 수 있도록 설정 👀 명령어 옵션과 설명 ls (list segments) : 현재 위치의 파일 목록 조회 ls -l : 파일의 상세정보 ls -a : 숨김 파일 표시 ls -t : 파일들을 생성시간순(제일 최신 것부터)으로 표시 ls -rt : 파일들을 생성시간순(제일 오래된 것부터)으..

Back-End/Study 2023.09.25

[MySQL] caused by: java.sql.sqlsyntaxerrorexception: you have an error in your sql syntax;

ERROR caused by: java.sql.sqlsyntaxerrorexception: you have an error in your sql syntax; check the manual that corresponds to your mysql server version for the right syntax to use near 'type=myisam' at line 6 at com.mysql.cj.jdbc.exceptions.sqlerror.createsqlexception(sqlerror.java:121) ~[mysql-connector-j-8.0.33.jar!/:8.0.33] at com.mysql.cj.jdbc.exceptions.sqlexceptionsmapping.translateexcepti..

Back-End/Issues 2023.09.12

[GitHub Actions] ApplicationTests > contextLoads() FAILED

ERROR StudywithsolApplicationTests > contextLoads() FAILED 37 java.lang.IllegalStateException at DefaultCacheAwareContextLoaderDelegate.java:98 38 Caused by: org.yaml.snakeyaml.constructor.ConstructorException at SafeConstructor.java:574 해결 -> 3번으로 해결 1. @SpringBootTest어노테이션에 class 추가 @SpringBootTest(classes = StudywithsolApplicationTests.class) class StudywithsolApplicationTests { @Test void co..

Back-End/Issues 2023.09.12

[GitHub Actions] Directory ~ does not contain a Gradle build

ERROR A Gradle build should contain a 'settings.gradle' or 'settings.gradle.kts' file in its root directory. It may also contain a 'build.gradle' or 'build.gradle.kts' file. 원인 한 레포에 backend, frontend 폴더를 나눠둠. 해당 actions는 backend에 해당 gradle 설정 파일이 root에 존재하지 않음 해결 jobs: build: runs-on: ubuntu-latest defaults: run: working-directory: ./backend - defaults working-directory 설정

Back-End/Issues 2023.09.12