투케이2K

116. (LINUX/리눅스) [쉘 스크립트 / Shell script] : openssl 사용해 AES128 CBC 암호화 수행 - aes128 encode 본문

Linux (cmd)

116. (LINUX/리눅스) [쉘 스크립트 / Shell script] : openssl 사용해 AES128 CBC 암호화 수행 - aes128 encode

투케이2K 2024. 8. 9. 19:03

[개발 환경 설정]

사용 툴 : Putty

OS : LINUX

 

[소스 코드]

 

# ------------------------------------------------------------------------------------------------
# [쉘 스크립트 / Shell script 설명]
# ------------------------------------------------------------------------------------------------

1. 쉘 스크립트 는 Shell 이나 command line 인터프리터에서 구동되도록 작성된 스크립트입니다.

2. 윈도우 배치 파일 (.bat) 개념과 비슷하며, 쉘 스크립트 동작으로 정의 된 명령이 자동으로 수행됩니다.

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [사전) 쉘 스크립트 파일 생성 및 권한 설명 참고 사이트]
# ------------------------------------------------------------------------------------------------

https://blog.naver.com/kkh0977/222808230519?trackingCode=blog_bloghome_searchlist

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [openssl 암호화 옵션 참고]
# ------------------------------------------------------------------------------------------------

enc : 암호화 방식

-a : base64 암호화 사용

-K : Key 값 입력 (대문자 주의) 

-iv : IV 값 입력

-e : 암호화

-d : 복호화

-in : 입력 파일

-out : 출력 파일

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [소스 코드]
# ------------------------------------------------------------------------------------------------

#!/bin/sh

# [START] --------------------------------------------------

echo ""
echo "-------------------------------------------"
echo "Hello Linux Shell Script"
echo "-------------------------------------------"
echo ""

# --------------------------------------------------
# [변수 선언] : [주의 점] : = 등호 기준 앞뒤로 공백이 없어야합니다 (변수 지정시)
# --------------------------------------------------
# [openssl 명령어 사용 도움말 확인] : $ openssl help
# --------------------------------------------------


# --------------------------------------------------
# [key , iv 변수 값 지정] : AES 128 기준 : key = 16 바이트 / iv = 16 바이트]
# --------------------------------------------------
# [주의점 : string 값을 >> hex 값으로 변환 및 지정이 필요]
# --------------------------------------------------
# [string : 0123456789abcdef >> hex : 30313233343536373839616263646566]
# --------------------------------------------------
key="30313233343536373839616263646566"
iv="30313233343536373839616263646566"


# [암호화를 수행할 데이터 지정]
data="hello"


# [openssl : aes 암호화 수행]
encode=$(echo -n ${data} | openssl enc -aes-128-cbc -e -K ${key} -iv ${iv} -a -A)


#[로그 출력 수행]
echo ""
echo "-------------------------------------------"
echo "key :: ${key}"
echo "-------------------------------------------"
echo "iv :: ${iv}"
echo "-------------------------------------------"
echo "data :: ${data}"
echo "-------------------------------------------"
echo "encode :: ${encode}"
echo "-------------------------------------------"
echo ""

# [END] ---------------------------------------------------

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [결과 출력]
# ------------------------------------------------------------------------------------------------

$ ./test.sh

-------------------------------------------
Hello Linux Shell Script
-------------------------------------------


-------------------------------------------
key :: 30313233343536373839616263646566
-------------------------------------------
iv :: 30313233343536373839616263646566
-------------------------------------------
data :: hello
-------------------------------------------
encode :: MOfLtxzZ0YgS4+5cPylFYw==
-------------------------------------------

# ------------------------------------------------------------------------------------------------





# ------------------------------------------------------------------------------------------------
# [AES 참고 사이트]
# ------------------------------------------------------------------------------------------------

# [온라인 AES 인코딩 및 디코딩]
https://www.devglan.com/online-tools/aes-encryption-decryption

# [string to hex 변환 사이트]
https://string-functions.com/string-hex.aspx

# [aes 128 인코딩 참고 사이트]
https://blog.naver.com/kkh0977/223437096560?

# ------------------------------------------------------------------------------------------------

 

반응형
Comments