openssl 파일 암호화 & 복호화

in #zyx7 years ago

Awesome zyx > 코딩

암호화할 file.txt 파일을 준비합니다.

$ openssl enc -base64 -in file.txt -out file.txt.enc
$ openssl enc -base64 -d -in file.txt.enc -out file.txt.dec

file.txt 란 파일을 암호화한 결과를 file.txt.enc 로 출력합니다.
이어서 file.txt.enc 파일을 복호화한 결과를 file.txt.dec 로 출력합니다.
위 과정은 별도의 비밀번호 입력없이 암호화와 복호화를 진행합니다.

암호를 통한 암호화 & 복호화

$ openssl aes-256-cbc -in file.txt -out file.txt.enc
$ openssl aes-256-cbc -in file.txt.enc -out file.txt.dec

이전 예시와 달리 암호를 물어보는 과정이 포함되어 있습니다.

공개키 비밀키를 통한 암호화 & 복호화

암호화

// 랜덤암호 파일 생성
$ openssl rand 192 -out key

// 키 파일로 암호화
$ openssl aes-256-cbc -in secret.txt -out secret.txt.enc -pass file:key

// 공개키를 pkcs8 포맷으로 변환
$ ssh-keygen -e -f ~/.ssh/id_rsa.pub -m PKCS8 > ~/.ssh/id_rsa.pub.pkcs8

// 생성한 pkcs8 파일로 키 파일 암호화
$ openssl rsautl -encrypt -pubin -inkey ~/.ssh/id_rsa.pub.pkcs8 -in key -out key.enc

// 압축하기
$ tar -zcvf secret.tgz *.enc

복호화

// 압축풀기
$ tar -xzvf secret.tgz

// 비밀키로 키 파일 복호화
$ openssl rsautl -decrypt -ssl -inkey ~/.ssh/id_rsa -in key.enc -out key

// 키 파일로 복호화
$ openssl aes-256-cbc -d -in secret.txt.enc -out secret.txt -pass file:key

공개키로 암호화하고 비밀키로 복호화가 추가되었습니다.

참고