
'invalid key' 에러는 암호화 키가 유효하지 않거나, 암호화와 복호화에 사용하는 키가 다르기 때문입니다.
위의 코드에서 key를 생성하는 부분은 sodium_crypto_secretbox_keygen() 함수를 사용하여 secret key를 생성합니다. 그러나 암호화와 복호화에 사용하는 key는 동일해야 합니다.
해결 방법은 두 가지입니다.
1. 암호화와 복호화에 사용하는 key를 동일하게 설정합니다.
2. 암호화와 복호화에 사용하는 key를 생성하는 부분을 동일하게 설정합니다.
예를 들어, 다음과 같이 암호화와 복호화에 사용하는 key를 동일하게 설정할 수 있습니다.
#hostingforum.kr
c
const unsigned char *key = sodium_crypto_secretbox_keygen();
unsigned char *encrypted = sodium_crypto_box(plaintext, &size, key);
unsigned char *decrypted = sodium_crypto_box_open(encrypted, &size, key);
또는, 다음과 같이 암호화와 복호화에 사용하는 key를 생성하는 부분을 동일하게 설정할 수 있습니다.
#hostingforum.kr
c
const unsigned char *key1 = sodium_crypto_secretbox_keygen();
const unsigned char *key2 = sodium_crypto_secretbox_keygen();
unsigned char *encrypted = sodium_crypto_box(plaintext, &size, key1);
unsigned char *decrypted = sodium_crypto_box_open(encrypted, &size, key2);
위의 예제에서 key1과 key2는 동일한 key를 생성하는 부분이지만, 암호화와 복호화에 사용하는 key가 다릅니다. 따라서 'invalid key' 에러가 발생합니다.
따라서, 암호화와 복호화에 사용하는 key를 동일하게 설정하거나, 암호화와 복호화에 사용하는 key를 생성하는 부분을 동일하게 설정하는 것이 좋습니다.
2025-05-17 05:43