기본 콘텐츠로 건너뛰기

추천 가젯

OpenSSL 명령어로 비대칭 암호화하기 (공개키로 암호화하고 비밀키로 복호화하기)

비대칭 암호화 암호화 키와 복호화 키가 서로 다른 비대칭 암호의 특징을 이용하여 공개키로 암호화하고 비밀키로 복호화할 수 있다. 우선 이전에 생성한 private.pem 과 public.pem 이 필요하다. 비밀키는 계속 가지고 있고, 통신을 하고자 하는 사람에게 공개키를 전달한다. 그 다음 공개키를 가진 사람이 공개키로 암호화하고, 암호화한 결과를 전달한다. 이 과정은 도청되어도 비밀키를 알아낼 수 없기에 원문을 도청자가 알아낼 수 없다. 원문 준비하기 원본은 다음과 같이 준비한다. 주로 대칭 암호화를 사용할 키를 전달할 때 공개키 암호를 보조하여 사용하므로, 여기서는 키파일을 생성하겠다. echo -n "key=" > key.txt openssl rand -hex 32 >> key.txt echo -n "iv=" >> key.txt openssl rand -hex 16 >> key.txt 그러면 key와 iv가 포함된 파일이 완성된다. 이 파일을 안전하게 전달하기 위해 암호화한다. 공개키로 암호화하기 openssl pkeyutl -encrypt -pubin -inkey [public.pem] -in [key.txt] -out encrypted.bin openssl pkeyutl : openssl에서 제공하는 low-level 공개키/개인키 연산 유틸리티인 pkeyutl 을 이용한다. -encyprt : 암호화를 한다. -pubin : 입력받을 키의 종류를 공개키로 지정한다. -inkey [입력키] : 입력받을 키를 지정한다. 암호화를 할 때는 공개키를 지정한다. 필자는 'public.pem'으로 지정하였다. -in [입력파일] : 입력파일을 지정한다. 암호화를 할 때는 원문을 지정한다. 필자는 위에서 생성한 'key.txt'로 지정하였다. -out [출력파일] : 출력파일을 지정한다. 출력된 결과는 암호문이므로 저장될 이름을 지정한다. 필자는 'e...

Git과 CLI (2) - 기본적인 git 명령어

기본 CLI 명령어

기본적인 git 명령어

  • git add 파일1 파일2 ...:

    • 파일들을 스테이지에 추가함.

  • git commit -m "커밋메시지":

    • 스테이지에 있는 파일들을 커밋함

  • git commit -a

    • add 명령을 생략하고 바로 커밋할 때 사용함. 변경된 파일과 삭제된 파일은 자동으로 스테이징되고 커밋됨. untracked 파일은 커밋되지 않음.

  • git push [-u] [원격저장소별명] [브랜치이름]:

    • 현재 브랜치에서 새로 생성한 커밋들을 원격저장소에 업로드함. -u 옵션으로 브랜치의 업스트림을 등록할 수 있음. 한 번 등록한 후에는 git push만 입력해도 작동함.

  • git pull:

    • 원격저장소의 변경사항을 워킹트리에 반영함. git fetchgit merge 명령을 합한 것임.

  • git fetch:

    • 원격저장소의 브랜치와 커밋들을 로컬저장소와 동기화함. 옵션을 생략하면 모든 원격저장소에서 모든 브랜치를 가져옴.

  • git merge 브랜치이름

    지정한 브랜치의 커밋들을 현재 브랜치 및 워킹트리에 반영함.

먼저 echo 명령을 사용해서 file1.txt 파일을 만든다.

yegang@yegangs:~/hello-git-cli$ echo "hello test" > file1.txt
yegang@yegangs:~/hello-git-cli$ ls
file1.txt
yegang@yegangs:~/hello-git-cli$ cat file1.txt
hello test
yegang@yegangs:~/hello-git-cli$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        file1.txt

nothing added to commit but untracked files present (use "git add" to track)
yegang@yegangs:~/hello-git-cli$

git status 명령어로 상태를 확인하면 file1.txt라는 파일이 생겼고 untracked상태임을 확인할 수 있다. 스테이지에 추가하기 위해 git add 명령어를 사용한다.

yegang@yegangs:~/hello-git-cli$ git status
On branch master

No commits yet

Changes to be committed:
  (use "git rm --cached <file>..." to unstage)
        new file:   file1.txt

yegang@yegangs:~/hello-git-cli$

reset 명령으로 스테이징 취소

위 실행결과의 아래에 use "git rm --cached <file>..." 명령으로 스테이지에서 내릴 수 있다. 다만 이보다 더 자주 사용하는 명령은 git reset이다. 스테이지 영역에 있는 파일들을 스테이지에서 내리는 명령이다.

soft, mixed, hard 리셋이 가능하며 기본값은 mixed이다.

yegang@yegangs:~/hello-git-cli$ git reset file1.txt
yegang@yegangs:~/hello-git-cli$ git status
On branch master

No commits yet

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        file1.txt

nothing added to commit but untracked files present (use "git add" to track)
yegang@yegangs:~/hello-git-cli$ ls
file1.txt
yegang@yegangs:~/hello-git-cli$ cat file1.txt
hello test
yegang@yegangs:~/hello-git-cli$

커밋하기

방금 전 언스테이징을 했으므로 git add 명령어를 이용해 스테이징한다. 그리고 git commit 명령으로 커밋한다. 이 때 vim 편집기가 열리는데, i 키를 눌러 INSERT 모드로 진입 후 내용을 작성한다. 그 다음 esc를 눌러 일반 모드로 진입한 다음, :wq 를 입력 후 엔터키를 눌러 저장 후 종료한다.

yegang@yegangs:~/hello-git-cli$ git add file1.txt
yegang@yegangs:~/hello-git-cli$ git commit
[master (root-commit) f3d91a3] First commit
 1 file changed, 1 insertion(+)
 create mode 100644 file1.txt
yegang@yegangs:~/hello-git-cli$ git log
commit f3d91a32ea8b442901bb9802526f3c84756bb01d (HEAD -> master)
Author: yeganghwang <ghkdtlahs@icloud.com>
Date:   Sat May 2 12:37:31 2026 +0900

    First commit

    simply added file1.txt
yegang@yegangs:~/hello-git-cli$ git log --oneline --graph --all --decorate
* f3d91a3 (HEAD -> master) First commit
yegang@yegangs:~/hello-git-cli$

git log의 다양한 옵션

  • git log: 현재 브랜치의 커밋 이력을 보는 명령어

  • git log -n<숫자>: 전체 커밋 중에서 최신 n개의 커밋만 살펴봄

  • git log --oneline --graph --decorate --all:

    • --oneline: 커밋 메시지를 한 줄로 요약해서 보여줌

    • --graph: 커밋 옆에 브랜치의 흐름을 그래프로 보여줌

    • --decorate: 브랜치와 태그 등의 참조를 간결히 표시함

    • --all: all 옵션이 없을 경우 HEAD와 관련없는 옵션은 보여주지 않음

자주 쓰는 명령어이기 때문에 원기올때 (강원기 전 메이플스토리 디렉터) (oneline, graph, all, decorate)로 외우면 편함.

도움말 기능

git help <명령어>를 이용하여 해당 명령어의 도움말을 확인할 수 있다.

댓글

가장 많이 본 글