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);
}
}
코드
댓글 달기