
Sodium 라이브러리에서 aead 암호화를 사용하여 데이터를 복호화 할 때 에러가 발생하는 이유는 다음과 같습니다.
1. 암호화와 복호화의 순서가 잘못된 경우: 암호화와 복호화는 반대 순서로 진행되어야 합니다. 암호화는 plaintext에서 ciphertext를 생성하고, 복호화는 ciphertext에서 plaintext를 생성합니다. 위 코드에서는 암호화 후 복호화를 진행하였습니다. 하지만, 복호화는 암호화 이전의 plaintext를 사용해야 하므로, 에러가 발생합니다.
2. 암호화와 복호화의 매개변수가 잘못된 경우: 암호화와 복호화의 매개변수는 반대 순서로 진행되어야 합니다. 암호화에서는 ciphertext, nonce, plaintext를 사용하고, 복호화에서는 plaintext, nonce, ciphertext를 사용해야 합니다. 위 코드에서는 암호화 후 복호화를 진행하였습니다. 하지만, 복호화에서는 ciphertext를 plaintext로 복호화해야 하므로, 에러가 발생합니다.
위 코드에 문제가 있는지 알려드리겠습니다. 위 코드에서 암호화와 복호화의 순서가 잘못된 경우와 매개변수가 잘못된 경우가 있습니다.
에러가 발생하지 않도록 수정한 코드는 다음과 같습니다.
#hostingforum.kr
c
#include
#include
int main() {
unsigned char key[32];
unsigned char nonce[12];
unsigned char ciphertext[32];
unsigned char plaintext[32];
// 키 생성
sodium_init();
crypto_secretbox_keygen(key);
// 복호화
if (sodium_crypto_aead_aegis256_decrypt(plaintext, NULL, 0, ciphertext, NULL, 0, key, nonce) != 0) {
printf("Error: 복호화 실패n");
} else {
printf("복호화 성공n");
}
// 암호화
crypto_aead_aes256gcm_encrypt(ciphertext, NULL, 0, plaintext, NULL, 0, key, nonce);
return 0;
}
위 코드에서는 복호화 후 암호화를 진행하였습니다. 또한, 암호화와 복호화의 매개변수도 반대 순서로 진행되었습니다.
2025-06-22 14:06