본문내용
_data64, 64);
}
//des.cpp 데스 알고리즘 소스
#include
#include//memset, memcpy 사용을 위한 헤더 파일
#include//exit, malloc 사용을 위한 헤더 파일
#include//pow() 사용을 위한 헤더 파일
#include "des_tables.h"//DES알고리즘에 사용되는 테이블들이 정리되어있다.
#include "function.h"//DES알고리즘에 사용되는 함수들이 정의되어있다.
void main()
{
char ch_data[8], ch_data2[8];// 암복호화 시에 입출력 변수
char ch_infilename[50], ch_outfilename[50];// 파일 이름 변수
char ch_key[8];// 암복호화 키
char *chp_read;// 파일의 내용을 저장하기 위한 포인터형 변수
int filesize,number;// 파일사이즈와 루프횟수를 위한 변수
int iednumber;// 암복호화 선택을 위한 변수
int i;// 임시 변수
FILE *fp_open, *fp_out;
while(1){
printf("\n\t---------------------------------------------------\n");
printf("\t DES 알고리즘을 이용한 암호화 및 복호화 프로그램\n");
printf("\t---------------------------------------------------\n\n");
printf("\t암호화 : 1\t 복호화 : 2\t 프로그램 종료 : 3\n\n");
printf("번호를 선택하여 주세요 : ");
scanf("%d", &iednumber);
//암호화 및 복호화 선택시
if(iednumber==1 || iednumber==2){
//입력 파일 open
if(iednumber == 1)
printf("암호화 할 파일 이름을 입력 하세요!\n-> ");
else if(iednumber == 2)
printf("복호화 할 파일 이름을 입력 하세요!\n-> ");
scanf("%s", ch_infilename);
printf("\n");
if((fp_open=fopen(ch_infilename, "r+b"))==NULL){
printf("파일이 없습니다. %s\n", ch_infilename);
exit(0);
}
//출력파일을 연다
if(iednumber == 1)
printf("암호화를 저장할 파일 이름을 입력 하세요!\n-> ");
else if(iednumber == 2)
printf("복호화를 저장할 파일 이름을 입력 하세요!\n-> ");
scanf("%s", ch_outfilename);
printf("\n");
if((fp_out=fopen(ch_outfilename, "wb"))==NULL){
printf("Can't Open %s\n", ch_outfilename);
exit(0);
}
//암호화 키를 생성한다.
for(i=0;i<1;){
printf("암호 키 를 입력하세요! -> ");
scanf("%s", ch_key);
if(strlen(ch_key) == 8){
//키 생성함수 호출
f_createkey(ch_key);
i++;
}
else printf("\n8자리의 키만 입력 할 수 있습니다.\n\n");
}
//입력파일의 크기를 알아내기 위해 파일포인터를 파일의 끝으로 이동하고
//ftell로 그 위치를 리턴하게 되면 파일의 크기를 알 수 있게 된다.
fseek(fp_open, 0, SEEK_END);
filesize = ftell(fp_open);
//입력파일의 데이터를 읽어와야 하므로 파일 포인터를 다시 처음으로 되돌린다.
fseek(fp_open, 0, SEEK_SET);
//8바이트 크기로 암복호화 하기 때문에 파일 크기를 8로 나눈다음 1을 더해서
//암복호화 횟수를 정한다.
number = (filesize/8) + 1;
//암복호화할 파일을 다 읽어 들일 수 있을만큼 메모리 할당을 한다.
chp_read = (char*)malloc((8*sizeof(char))*number);
memset(chp_read, 0, (sizeof(char)*8)*number);
//파일안의 내용을 다 읽어 들인다.
fread(chp_read, filesize, 1, fp_open);
//number = (filesize/8) + 1 에서 복호화 시에 1이 한번 더 추가 되기 때문에
if(iednumber==2) number = number-1;
//실질적으로 암복호화를 진행한다.
for(i=0;i
//변수 초기화
memset(ch_data, '\0', 8);
memset(ch_data2, '\0', 8);
//chp_read에 있는 데이터를 8바이트 만큼 읽어 들인다음
//포인터를 8만큼 증가시킨다.
memcpy(ch_data, chp_read+(i*8), 8);
//암호화 인지 복호화 인지 선택한다.
if(iednumber==1)f_des_encrypt(ch_data2, ch_data,1);
else if(iednumber==2)f_des_encrypt(ch_data2, ch_data,2);
//암복호화가 된 내용을 파일에 쓴다.
fwrite(ch_data2, 8, 1, fp_out);
}//for(i=0;i
free(chp_read);
fclose(fp_open);
fclose(fp_out);
if(iednumber == 1)
printf("\n암호화 하였습니다.\n\n");
else if(iednumber == 2)
printf("\n복호화 하였습니다.\n\n");
}//if(iednumber==1 || iednumber==2)
//프로그램 종료
else if(iednumber==3){
printf("\n프로그램을 종료하셨습니다.\n\n");
exit(1);
}//if(iednumber==3)
//예외 처리
elseprintf("\n1, 2, 3 중 하나를 입력하세요\n\n");
}
}
}
//des.cpp 데스 알고리즘 소스
#include
#include
#include
#include
#include "des_tables.h"//DES알고리즘에 사용되는 테이블들이 정리되어있다.
#include "function.h"//DES알고리즘에 사용되는 함수들이 정의되어있다.
void main()
{
char ch_data[8], ch_data2[8];// 암복호화 시에 입출력 변수
char ch_infilename[50], ch_outfilename[50];// 파일 이름 변수
char ch_key[8];// 암복호화 키
char *chp_read;// 파일의 내용을 저장하기 위한 포인터형 변수
int filesize,number;// 파일사이즈와 루프횟수를 위한 변수
int iednumber;// 암복호화 선택을 위한 변수
int i;// 임시 변수
FILE *fp_open, *fp_out;
while(1){
printf("\n\t---------------------------------------------------\n");
printf("\t DES 알고리즘을 이용한 암호화 및 복호화 프로그램\n");
printf("\t---------------------------------------------------\n\n");
printf("\t암호화 : 1\t 복호화 : 2\t 프로그램 종료 : 3\n\n");
printf("번호를 선택하여 주세요 : ");
scanf("%d", &iednumber);
//암호화 및 복호화 선택시
if(iednumber==1 || iednumber==2){
//입력 파일 open
if(iednumber == 1)
printf("암호화 할 파일 이름을 입력 하세요!\n-> ");
else if(iednumber == 2)
printf("복호화 할 파일 이름을 입력 하세요!\n-> ");
scanf("%s", ch_infilename);
printf("\n");
if((fp_open=fopen(ch_infilename, "r+b"))==NULL){
printf("파일이 없습니다. %s\n", ch_infilename);
exit(0);
}
//출력파일을 연다
if(iednumber == 1)
printf("암호화를 저장할 파일 이름을 입력 하세요!\n-> ");
else if(iednumber == 2)
printf("복호화를 저장할 파일 이름을 입력 하세요!\n-> ");
scanf("%s", ch_outfilename);
printf("\n");
if((fp_out=fopen(ch_outfilename, "wb"))==NULL){
printf("Can't Open %s\n", ch_outfilename);
exit(0);
}
//암호화 키를 생성한다.
for(i=0;i<1;){
printf("암호 키 를 입력하세요! -> ");
scanf("%s", ch_key);
if(strlen(ch_key) == 8){
//키 생성함수 호출
f_createkey(ch_key);
i++;
}
else printf("\n8자리의 키만 입력 할 수 있습니다.\n\n");
}
//입력파일의 크기를 알아내기 위해 파일포인터를 파일의 끝으로 이동하고
//ftell로 그 위치를 리턴하게 되면 파일의 크기를 알 수 있게 된다.
fseek(fp_open, 0, SEEK_END);
filesize = ftell(fp_open);
//입력파일의 데이터를 읽어와야 하므로 파일 포인터를 다시 처음으로 되돌린다.
fseek(fp_open, 0, SEEK_SET);
//8바이트 크기로 암복호화 하기 때문에 파일 크기를 8로 나눈다음 1을 더해서
//암복호화 횟수를 정한다.
number = (filesize/8) + 1;
//암복호화할 파일을 다 읽어 들일 수 있을만큼 메모리 할당을 한다.
chp_read = (char*)malloc((8*sizeof(char))*number);
memset(chp_read, 0, (sizeof(char)*8)*number);
//파일안의 내용을 다 읽어 들인다.
fread(chp_read, filesize, 1, fp_open);
//number = (filesize/8) + 1 에서 복호화 시에 1이 한번 더 추가 되기 때문에
if(iednumber==2) number = number-1;
//실질적으로 암복호화를 진행한다.
for(i=0;i
memset(ch_data, '\0', 8);
memset(ch_data2, '\0', 8);
//chp_read에 있는 데이터를 8바이트 만큼 읽어 들인다음
//포인터를 8만큼 증가시킨다.
memcpy(ch_data, chp_read+(i*8), 8);
//암호화 인지 복호화 인지 선택한다.
if(iednumber==1)f_des_encrypt(ch_data2, ch_data,1);
else if(iednumber==2)f_des_encrypt(ch_data2, ch_data,2);
//암복호화가 된 내용을 파일에 쓴다.
fwrite(ch_data2, 8, 1, fp_out);
}//for(i=0;i
fclose(fp_open);
fclose(fp_out);
if(iednumber == 1)
printf("\n암호화 하였습니다.\n\n");
else if(iednumber == 2)
printf("\n복호화 하였습니다.\n\n");
}//if(iednumber==1 || iednumber==2)
//프로그램 종료
else if(iednumber==3){
printf("\n프로그램을 종료하셨습니다.\n\n");
exit(1);
}//if(iednumber==3)
//예외 처리
elseprintf("\n1, 2, 3 중 하나를 입력하세요\n\n");
}
}
소개글