기본 콘텐츠로 건너뛰기

추천 가젯

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 (4) - 브랜치 생성하기

브랜치를 사용하는 경우

  • 새로운 기능 추가

    • master 브랜치에는 정상적으로 동작하는 안정적인 버전의 프로젝트가 저장됨

    • 새로운 기능을 추가할 때는 master 브랜치의 최신 커밋으로부터 브랜치를 생성하여 개발

    • 개발, 코드 리뷰, 테스트까지 모두 완료해서 이상이 없으면 master 브랜치로 병합

  • 버그 수정

    • 버그가 발생하면 master 브랜치로부터 새로운 브랜치를 생성해서 작업함.

    • 브랜치 이름은 hotFix, bugFix 등과 같은 이름 사용

    • 버그 수정이 끝나면 master 브랜치로 병합

  • 병합과 리베이스 테스트

  • 이전 코드 개선

    • 함수의 로직 등을 개선하거나 코드를 변경할 때 주석 처리하고 아래에 새로운 개선 코드를 작성하는 것보다 새로 브랜치를 만들어 사용하는 것이 좋음.

    • 기존의 코드를 아예 삭제하고 과감히 새 코드를 작성함.

    • 다른 브랜치의 이전 커밋에는 잘 돌아가는 코드가 여전히 남아 있기에 문제가 없음.

브랜치 생성 명령어

  • git branch [-v]:

    • 로컬 저장소의 브랜치 목록을 보는 명령으로, -v 옵션으로 마지막 커밋도 함께 표시함.

    • 브랜치 이름 왼쪽에 *가 붙어 있으면 HEAD 브랜치임

  • git vranch [-f] <브랜치이름> <커밋체크섬>:

    • 새로운 브랜치를 생성함. 커밋체크섬 값을 주지 않으면 HEAD로부터 브랜치를 생성함.

    • 이미 있는 브랜치를 다른 커밋으로 옮길 때에는 -f 옵션을 사용함.

  • git branch -r[v]: 원격 저장소(remote의 r)을 보고 싶을 때 사용함.

  • git checkout <브랜치이름>: 특정 브랜치로 체크아웃할 때 사용함.

  • git checkout -b <브랜치이름> <커밋체크섬>: 특정 커밋에서 브랜치를 새로 생성하고 동시에 체크아웃까지 함.

  • git merge <대상브랜치>: 현재 브랜치와 대상 브랜치를 병합할 때 사용함. 병합커밋이 새로 생기는 경우가 많음.

  • git rebase <대상브랜치>: 내 브랜치의 커밋들을 대상 브랜치에 재배치시킴.

  • git branch -d <브랜치이름>: 특정 브랜치를 삭제할 때 사용함. HEAD 브랜치나 병합이 되지 않은 브랜치는 삭제할 수 없음.

  • git branch -D <브랜치이름>: 브랜치를 강제로 삭제하는 명령

기존 두 개의 커밋을 바탕으로 브랜치를 만들고 커밋을 한 다음 마스터 브랜치로 병합해 보겠다.

cd [hello-git-cli 폴더]
# 먼저 작업 폴더로 이동한다.

yegang@yegangs:~/hello-git-cli$ git log --oneline
7240873 (HEAD -> master, origin/master) Second commit
f3d91a3 First commit
# 커밋 로그를 보는 병령어이다. HEAD가 master 브랜치를 가리키고 있다.

yegang@yegangs:~/hello-git-cli$ git branch -v 
* master 7240873 Second commit
# 브랜치 정보를 확인하는 명령어이다.
# * 표시가 있다는 것은 HEAD를 의미한다. HEAD가 master에 있다.

yegang@yegangs:~/hello-git-cli$ git branch mybranch1 # 새 브랜치 생성

yegang@yegangs:~/hello-git-cli$ git branch 
* master
  mybranch1
# 현재 브랜치를 확인하는 명령이다.
# 새로 mybranch1 브랜치가 생성된 것을 확인할 수 있다.
# 아직 체크아웃을 하지 않았으므로 HEAD(*)가 master에 있다. 만약 git branch -b mybranch1 명령을 사용했다면 브랜치를 생성하고 체크아웃까지 했을 것이다.

yegang@yegangs:~/hello-git-cli$ git log --oneline --graph --all --decorate # 변경된 브랜치 확인
* 7240873 (HEAD -> master, origin/master, mybranch1) Secon
d commit
* f3d91a3 First commit

여기서 HEAD는 현재 작업 중인 브랜치를 가리킨다. 브랜치는 커밋을 가리키므로 결과적으로 HEAD는 현재 작업 중인 브랜치의 최근 커밋을 가리킨다.

댓글

가장 많이 본 글