[go] Go 언어에서의 암호화와 복호화 예제 코드

암호화와 복호화는 보안 관련 작업에서 중요한 부분입니다. Go 언어에서의 암호화와 복호화를 하는 방법을 알아보겠습니다.

암호화 (Encryption)

Go 언어에서 데이터를 암호화 하기 위해서는 crypto 패키지를 사용할 수 있습니다. 예를 들어, AES 알고리즘을 사용하여 데이터를 암호화 하는 예제 코드는 다음과 같습니다.

import (
	"crypto/aes"
	"crypto/cipher"
	"crypto/rand"
	"io"
)

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
	}

	stream := cipher.NewCFBEncrypter(block, iv)
	stream.XORKeyStream(ciphertext[aes.BlockSize:], data)

	return ciphertext, nil
}

위 코드는 AES 암호화 알고리즘을 사용하여 데이터를 암호화하는 함수를 정의한 것입니다.

복호화 (Decryption)

암호화된 데이터를 복호화하기 위해서는 암호화할 때 사용한 키와 초기화 벡터를 사용하여 복호화 해야 합니다. 아래는 Go 언어에서 암호화된 데이터를 복호화하는 예제 코드입니다.

func decrypt(data []byte, key []byte) ([]byte, error) {
	block, err := aes.NewCipher(key)
	if err != nil {
		return nil, err
	}

	iv := data[:aes.BlockSize]
	data = data[aes.BlockSize:]

	stream := cipher.NewCFBDecrypter(block, iv)
	stream.XORKeyStream(data, data)

	return data, nil
}

위 코드는 암호화된 데이터를 복호화하는 함수를 정의한 것으로, 초기화 벡터와 키를 사용하여 데이터를 복호화합니다.

마무리

위 예제 코드를 통해 Go 언어에서의 암호화와 복호화를 수행하는 방법을 알아보았습니다. 보다 자세한 내용은 공식 문서를 참고하시기 바랍니다.