AES-256-CBC with openssl
1. Base64
- encode
echo 명령에서 -n 옵션은 LF(LineFeed) 제거
windows 에서는 “echo | set -p=” 을 사용
> echo -n 'this is a raw string.' | openssl enc -base64 -e
dGhpcyBpcyBhIHJhdyBzdHJpbmcu
# windows command
> echo | set -p=this is a raw string.| openssl enc -base64 -e
- decode
base64 decoding 시에는 echo 명령에서 -n 옵션은 제외할 것.
> echo 'dGhpcyBpcyBhIHJhdyBzdHJpbmcu' | openssl enc -base64 -d
this is a raw string.
2. Create AES-256-CBC Key, IV
# options
# -k <password> Key, IV를 생성할 패스워드
# -P 암호화를 진행하지 않고 생성된 Key, IV, Salt 값 표시
# -S Salt 값 입력
# -nosalt Salt 를 적용하지 않음
# <password> 입력하여 Key, IV 생성
# 여기서는 <password> 로 "password"를 입력함.
> openssl enc -aes-256-cbc -k password -P
salt=2308E3BE706F36F3
key=887743585FF5E0F1DDF4B99C18A49ED4CD7AF54449455A20430EA499EB0E85C6
iv =93AAAA3D879F1DD3282938859D878DDC
# <password>, salt 값을 입력하여 Key, IV 생성
# 첫번째 예제와 동일하게 생성된다.
> openssl enc -aes-256-cbc -k password -S 2308E3BE706F36F3 -P
key=887743585FF5E0F1DDF4B99C18A49ED4CD7AF54449455A20430EA499EB0E85C6
iv =93AAAA3D879F1DD3282938859D878DDC
# <password> 입력하지만 -nosalt 옵션을 붙여(salt 미사용) Key, IV 생성
# 항상 동일한 Key, IV가 생성된다.
> openssl enc -aes-256-cbc -k password -nosalt -P
key=5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08
iv =B7B4372CDFBCB3D16A2631B59B509E94
3. AES-256-CBC
- 생성된 Key, IV를 사용하여 Encrypt/Decrypt
# options
# -e encrypt 처리
# -a Base64로 입출력
# -K Key 값 입력 (대문자 주의)
# -iv IV 값 입력
# -in 입력 파일
# -out 출력 파일
# Encrypt text
> echo -n "This is a sample text." | openssl enc -aes-256-cbc -e -a -K "5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08" -iv "B7B4372CDFBCB3D16A2631B59B509E94"
satEIAVWTySBa7Bvu8ChfyEJBELVVn+V6Oeus0EusEo=
# Decrypt text
> echo "satEIAVWTySBa7Bvu8ChfyEJBELVVn+V6Oeus0EusEo=" | openssl enc -aes-256-cbc -d -a -K "5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08" -iv "B7B4372CDFBCB3D16A2631B59B509E94"
This is a sample text.
# Encrypt file
> openssl enc -aes-256-cbc -e -a -in input.txt -out output.txt -K "5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08" -iv "B7B4372CDFBCB3D16A2631B59B509E94"
# Decrypt file
> openssl enc -aes-256-cbc -d -a -in output.txt -out input.txt -K "5F4DCC3B5AA765D61D8327DEB882CF992B95990A9151374ABD8FF8C5A7A0FE08" -iv "B7B4372CDFBCB3D16A2631B59B509E94"
4. 참고 사항
- 파일 처리시 유의 사항
Windows와 POSIX 의 텍스트 파일 라인 처리 기준이 다르다.
# 파일 내용이 다음과 같은 경우
-----------
A
A
-----------
# Windows
줄이 바뀔 때 CR(0d) LF(0a) 가 붙는다.
-----------
41 0d 0a 41
-----------
# POSIX
줄이 끝날 때 LF(0a) 가 붙는다.
-----------
41 0a 41 0a
-----------
댓글남기기