본문 바로가기
프로그래밍/Windows API

[MFC/파일입출력] 간단하게 파일내용을 암호화하는 방법...

by 베리베리 2009. 8. 31.

출처: tipssoft.com

저장할 파일에 암호걸수 있나여?? 짐 급해서여...
일기장 프로그램을 대충 만들었는데 거기에 다른사람이 못보게 암호를 걸라구 하는데... 좀 알려주세여

[답변]

안녕하세요~!

암호를 걸어주는 클래스나 함수가 있는지는 저희도 잘모르겠구요... 그냥, 저희 같으면 간단하게...
루틴을 만들겠습니다... 아주 단순하게요... 아무리 암호를 잘 걸어도, 풀어서 보겠다고 마음을 먹으면
암호를 거는쪽보다 푸는쪽이 훨씬 유리하거든요... 아시죠 ^^;

그냥, 단순하게.... XOR 연산자같은거 사용하셔가지구,,, 각 비트별로 님이 원하는 패턴을 XOR 시켰서
저장해버리면, 저장된 파일을 열었을때... 말그대로 알아보기 힘든 글자 패턴으로 나올겁니다... 물론,
누가 그 패턴을 알아내서 역으로 변환하는 루틴을 만들수도 있겠지만, 이정도 노력을 하는 사람이라면
어쩔수 없겠죠?? ^^;

그만큼 보고 싶어하는데, 보게 해주는것도... ㅡㅡ!

물론, 저희가 이야기 드린 루틴은 아주 간단한 암호화구요... 내부 라인을 서로 섞어서 XOR하거나,
가짜 패턴을 집어넣는등, 루틴을 조금만 추가하면 암호를 푸는 사람은... 머리가 좀 아플겁니다...
루틴을 그냥, 간단하게 만드세요... 예를 들면 아래와 같습니다...

저장할 키를

char key = 253;  // 마음데로 하세요~!  ( 0 ~ 255 )

1. 저장할때.....

char *p_data = "나는 사람이다..";
int length = strlen(p_data);

for(int i = 0; i < length; i++){
  p_data[i] = p_data[i] ^ key;
}

FILE *p_file = fopen("a.dat", "wb");
if(p_file != NULL){
  fwrite(p_data, length + 1, 1, p_file);
  fclose(p_file);
}

이렇게 하시면 되구요...

2. 읽어들일 때.....

char load_data[256] = { 0 ,};

FILE *p_file = fopen("a.dat", "rb");
if(p_file != NULL){
  fread(load_data, 256, 1, p_file);
  fclose(p_file);
}

int length = strlen(load_data);

for(int i = 0; i < length; i++){
  load_data[i] = load_data[i] ^ key;
}

대충 이렇게 하면 되겠죠.. 물론, 그냥, 코드로 쭉~ 적어서 여러가지 문제
점이 있을수는 있겠지만, 참조하시구 님의 코드에서 응용하십시요...

그럼, 즐거운 하루되세요~! 

 

댓글