c언어 암호화 코드 시저
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <stdbool.h>
#define L 1024
#define MOD %
typedef struct _Cea
{
char plainText[1024];
char cipherText[1024];
char decryptText[1024];
char alphabetString[26];
} cea, *ptrCea;
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
void _Init_(cea** param);
void _WritePlainTextString_(cea** param);
void _EncryptMov3_(cea** param);
void _DecryptMov3_(cea** param);
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
int main(void) {
ptrCea pNode = (ptrCea)malloc(sizeof(cea));
_Init_(&pNode);
_WritePlainTextString_(&pNode);
_EncryptMov3_(&pNode);
_DecryptMov3_(&pNode);
free(pNode);
return 0;
} // end of main function
// +++++++++++++++++++++++++++++++++++++++++++++++++++++
void _Init_(cea** param)
{
if ((*param) == NULL)
{
fprintf(stderr, "malloc error ... !!!");
exit(1);
}
else
{ // (*param) != NULL
// { A, B, C, D, E, F, G, H, I, ..., X, Y, Z }
for (int i = 0; i < 26; i++)
{
(*param)->alphabetString[i] = (char)((int)('A') + i);
}
// plainText
strcpy((**param).plainText, "\0");
// cipherText
strcpy((**param).cipherText, "\0");
// decryptText
strcpy((**param).decryptText, "\0");
}
} // end of _Init_ function
void _WritePlainTextString_(cea** param)
{
printf("평문 입력 : ");
fgets((** param).plainText, L, stdin);
int str_len = 0;
str_len = strlen((** param).plainText);
(** param).plainText[str_len - 1] = '\0';
system("cls");
printf("%s\n", (** param).plainText);
} // end of _WritePlainTextString_ function
void _EncryptMov3_(cea** param)
{
bool TF_value;
int indx = 0;
int i, j;
for (i = 0; i < strlen((** param).plainText); i++)
{
TF_value = false;
for (j = 0; j < strlen((** param).alphabetString); j++)
{
if ((** param).plainText[i] == (** param).alphabetString[j])
{
TF_value = true;
// << Encrypt >>
indx = (j + 3) MOD(strlen((** param).alphabetString));
break;
}
}
if (TF_value == true)
{
(** param).cipherText[i] = (** param).alphabetString[indx];
}
else
{ // TF_value == false
(** param).cipherText[i] = (** param).plainText[i];
}
}
(** param).cipherText[i] = '\0';
printf("cipherText => %s \n", (** param).cipherText);
} // end of _EncryptMov3_ function
void _DecryptMov3_(cea** param)
{
bool TF_value;
int indx = 0;
int i, j;
for (i = 0; i < strlen((** param).cipherText); i++)
{
TF_value = false;
for (j = 0; j < strlen((** param).alphabetString); j++)
{
if ((** param).cipherText[i] == (** param).alphabetString[j])
{
TF_value = true;
// << Encrypt >>
indx = (j - 3) MOD(strlen((** param).alphabetString));
if (indx < 0)
{
indx = indx + strlen((** param).alphabetString);
}
break;
}
}
if (TF_value == true)
{
(** param).decryptText[i] = (** param).alphabetString[indx];
}
else
{ // TF_value == false
(** param).decryptText[i] = (** param).cipherText[i];
}
}
(** param).decryptText[i] = '\0';
printf("decryptText => %s \n", (** param).decryptText);
}