[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 언어에서의 암호화와 복호화를 수행하는 방법을 알아보았습니다. 보다 자세한 내용은 공식 문서를 참고하시기 바랍니다.