출처: 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;
}
대충 이렇게 하면 되겠죠.. 물론, 그냥, 코드로 쭉~ 적어서 여러가지 문제
점이 있을수는 있겠지만, 참조하시구 님의 코드에서 응용하십시요...
그럼, 즐거운 하루되세요~!
댓글