[go] Go에서 JSON 데이터 암호화 및 복호화하기
이 글에서는 Go 프로그래밍 언어를 사용하여 JSON 데이터를 암호화하고 복호화하는 방법을 알아보겠습니다.
암호화 및 복호화 라이브러리 선택
Go에는 암호화 및 복호화를 처리하기 위한 여러 라이브러리가 있지만, 가장 널리 사용되는 것 중 하나는 crypto
패키지입니다. 이 패키지를 사용하여 JSON 데이터를 암호화하고 복호화할 수 있습니다.
import (
"crypto/aes"
"crypto/cipher"
"crypto/rand"
"encoding/base64"
"io"
)
JSON 데이터 암호화하기
JSON 데이터를 암호화하려면, 우선 키를 생성해야 합니다. 이후 cipher.NewCFBEncrypter()
함수를 사용하여 데이터를 암호화한 후, 결과를 base64로 인코딩합니다.
func encrypt(data []byte, key []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
ciphertext := make([]byte, aes.BlockSize+len(data))
iv := ciphertext[:aes.BlockSize]
if _, err := io.ReadFull(rand.Reader, iv); err != nil {
return nil, err
}
cfb := cipher.NewCFBEncrypter(block, iv)
cfb.XORKeyStream(ciphertext[aes.BlockSize:], data)
return []byte(base64.URLEncoding.EncodeToString(ciphertext)), nil
}
JSON 데이터 복호화하기
JSON 데이터를 복호화하려면, 우선 암호화할 때 사용한 키로 cipher.NewCFBDecrypter()
함수를 사용합니다. 이후 결과를 base64 디코딩한 후 복호화합니다.
func decrypt(data []byte, key []byte) ([]byte, error) {
block, err := aes.NewCipher(key)
if err != nil {
return nil, err
}
data, err = base64.URLEncoding.DecodeString(string(data))
if err != nil {
return nil, err
}
iv := data[:aes.BlockSize]
data = data[aes.BlockSize:]
cfb := cipher.NewCFBDecrypter(block, iv)
cfb.XORKeyStream(data, data)
return data, nil
}
이제 이러한 함수를 사용하여 JSON 데이터를 암호화하고 복호화할 수 있습니다.
위의 코드 예제는 기본적인 암호화 및 복호화 과정을 보여주기 위한 것이며, 실제 사용 환경에 따라 세부적인 보안적인 고려가 필요할 수 있습니다.
더 많은 정보를 원하시면, Go Cryptography Package 문서를 참고하시기 바랍니다.