본문 바로가기
IT/개발

[C]파일 시저 암복호화

by 말도 2015. 2. 3.
728x90
반응형


시저암호화란??


암호학에서 다루는 간단한 치환암호의 일종이다. 암호화하고자 하는 내용을 알파벳별로 일정한거리만큼 밀어서 다른 알파벳으로 치환하는 방식이다. 예를 들어 3글자씩 밀어내는 카이사르 암호도 ‘COME TO ROME’를 암호화 하면 ‘FRPH WR URPH’가 된다. 해당 암호화를 통해 앱을 디컴파일 하여도 쉽게 인증서를 획득할 수 없이 개발이 되어 있다.


불펌이 많아 댓글에 메일주소 알려주시면 보내드리도록 하겠습니다.


암호화

#include <stdio.h> 

#include <stdlib.h>

#include <string.h>

#define LENGTH 200


int main()

{

  FILE *fp1, *fp2 ;

  char line[LENGTH] ;

  char c ;

  fp1 = fopen("[암호화 할 파일명]", "r");  

  fp2 = fopen("[암호화 될 파일명]", "w");


  int i;

  int key = 5 ;

  

  while ( fgets(line, LENGTH -1 , fp1 ) )

  {


  for(i=0; i<strlen(line); i++) {

                if(line[i]>='A' && line[i]<='Z') {

                        line[i]-='A';

                        if(line[i]+key<0){

                                line[i]+=26;

                        }

                        line[i]=(line[i]+key)%26;

                        line[i]+='A';

                }

                if(line[i]>='a' && line[i]<='z') {

                        line[i]-='a';

                        if(line[i]+key<0) {

                                line[i]+=26;

                        }

                        line[i]=(line[i]+key)%26;

                        line[i]+='a';

                }

        }


    fputs ( line, fp2 ) ;

  }

  

  printf("File copy completed!\n") ;

  

  fclose ( fp1 ) ;

  fclose ( fp2 ) ;

  

  return 0;

}




복호화

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define LENGTH 200


int main()

{

  FILE *fp1, *fp2 ;

  char line[LENGTH] ;

  char c ;

  fp1 = fopen("[복호화 할 파일명]", "r");  

  fp2 = fopen("[복호화 될 파일명]", "w");


  int i;

  int key = 5 ;

  

  key=-key;


  while ( fgets(line, LENGTH -1 , fp1 ) )

  {


  for(i=0; i<strlen(line); i++) {

                if(line[i]>='A' && line[i]<='Z') {

                        line[i]-='A';

                        if(line[i]+key<0){

                                line[i]+=26;

                        }

                        line[i]=(line[i]+key)%26;

                        line[i]+='A';

                }

                if(line[i]>='a' && line[i]<='z') {

                        line[i]-='a';

                        if(line[i]+key<0) {

                                line[i]+=26;

                        }

                        line[i]=(line[i]+key)%26;

                        line[i]+='a';

                }

        }


    fputs ( line, fp2 ) ;

  }

  

  printf("File copy completed!\n") ;

  

  fclose ( fp1 ) ;

  fclose ( fp2 ) ;

  

  return 0;


퍼갈때 댓글 및 출처 부탁드려요.


반응형