c언어 암호화 복호화코드인데 왜틀렸을까요(비즈네르 암호)

익명 사용자의 이미지

#include
#include
#include
#include
#define MAX_MSG_SIZE 100
#define MAX_KEY 26
#define MAX_KEY_SIZE 9
#define TRUE 1
#define FALSE 0
char getMode();
void getMessage(char Message[]);
void getKey(char key[]);
void translateMessage(char mode, char key[], char Message[], char TMessage[]);
char getMode()
{
int mode;
while(TRUE)
{
printf("==========================\n");
printf("e.메세지 암호화\n");
printf("d.암호문 복호화\n");
printf("==========================\n");
printf(">>기능을 선택하세요 : ");
mode=getchar();
mode=tolower(mode);
if(mode=='e'||mode=='d')
{
return mode;
}
}
}
void getMessage(char Message[])
{
fflush(stdin);
printf(">>메세지를 입력하세요.\n");
gets(Message);
}
void getKey(char key[])
{
int idx;
while(TRUE)
{
printf(">>키 값을 입력하세요(최대 %d글자): ", MAX_KEY_SIZE -1);
scanf("%s", key);
for(idx=0; key[idx] && islower(key[idx]); idx++);
if(idx==strlen(key))
{
return;
}
}
}
void translateMessage(char mode, char key[], char Message[], char TMessage[])
{
char symbol; int idx, num, keyidx=0;;
memset(TMessage, 0, MAX_MSG_SIZE);
for(idx=0; idx {
symbol=Message[idx];
if(isalpha(symbol)){
num=symbol;
if(mode=='e')
{
num+=key[keyidx]-'a';
if((isupper(symbol) && num>'Z')||(islower(symbol) && num>'z'))
{
num-=MAX_KEY;
}
}
else
{
num-=key[keyidx]-'a';
if((isupper(symbol) && num<'A')||(islower(symbol) && num<'a'))
{
num+=MAX_KEY;
}
}
TMessage[idx]=num;
}
else
{
TMessage[idx]=symbol;
}
keyidx=(keyidx+1)%strlen(key);
}
}
int main()
{
char mode;
char key[MAX_KEY_SIZE];
char Message[MAX_MSG_SIZE];
char TMessage[MAX_MSG_SIZE];

mode=getMode();
switch(mode){
case 'e':
printf("메시지를 암호화합니다.\n");
getMessage(Message);
getKey(key);
translateMessage(mode, key, Message, TMessage);
printf("암호문 : %s\n", TMessage);
case 'd':
printf("메시지를 복호화합니다.\n");
getMessage(Message);
getKey(key);
translateMessage(mode, key, Message, TMessage);
printf("복호문 : %s\n", TMessage);
}
}

ㄹ머ㅣㅈ더;ㅓㅏㅅ의 이미지

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<ctype.h>
#define MAX_MSG_SIZE 100
#define MAX_KEY 26
#define MAX_KEY_SIZE 9
#define TRUE 1
#define FALSE 0
char getMode();
void getMessage(char Message[]);
void getKey(char key[]);
void translateMessage(char mode, char key[], char Message[], char TMessage[]);
char getMode()
{
    int mode;
    while(TRUE)
    {
        printf("==========================\n");
        printf("e.메세지 암호화\n");
        printf("d.암호문 복호화\n");
        printf("==========================\n");
        printf(">>기능을 선택하세요 : ");
        mode=getchar();
        mode=tolower(mode);
        if(mode=='e'||mode=='d')
        {
            return mode;
        }
    }
}
void getMessage(char Message[])
{
    fflush(stdin);
    printf(">>메세지를 입력하세요.\n");
    gets(Message);
}
void getKey(char key[])
{
    int idx;
    while(TRUE)
    {
        printf(">>키 값을 입력하세요(최대 %d글자): ", MAX_KEY_SIZE -1);
        scanf("%s", key);
        for(idx=0; key[idx] && islower(key[idx]); idx++);
        if(idx==strlen(key))
        {
            return;
        }
    }
}
void translateMessage(char mode, char key[], char Message[], char TMessage[])
{
    char symbol; int idx, num, keyidx=0;;
    memset(TMessage, 0, MAX_MSG_SIZE);
    for(idx=0; idx<strlen(Message); idx++)
    {
        symbol=Message[idx];
        if(isalpha(symbol)){
            num=symbol;
            if(mode=='e')
            {
                num+=key[keyidx]-'a';
                if((isupper(symbol) && num>'Z')||(islower(symbol) && num>'z'))
                {
                    num-=MAX_KEY;
                }
            }
            else
            {
                num-=key[keyidx]-'a';
                if((isupper(symbol) && num<'A')||(islower(symbol) && num<'a'))
                {
                    num+=MAX_KEY;
                }
            }
            TMessage[idx]=num;
        }
        else
        {
            TMessage[idx]=symbol;
        }
        keyidx=(keyidx+1)%strlen(key);
    }
}
int main()
{
    char mode;
    char key[MAX_KEY_SIZE];
    char Message[MAX_MSG_SIZE];
    char TMessage[MAX_MSG_SIZE];
 
    mode=getMode();
    switch(mode){
        case 'e':
            printf("메시지를 암호화합니다.\n");
            getMessage(Message);
            getKey(key);
            translateMessage(mode, key, Message, TMessage);
            printf("암호문 :  %s\n", TMessage);
        case 'd':
            printf("메시지를 복호화합니다.\n");
            getMessage(Message);
            getKey(key);
            translateMessage(mode, key, Message, TMessage);
            printf("복호문 :  %s\n", TMessage);
    }
}