반응형
암호화 방법 중의 하나는 암호화할 값을 키값과 비트 XOR 연산을 하는 것이다. 원래의 값을 복원하려면 다시 비트 XOR 연산을 하면 된다. 이 암호화 방법을 사용하여 사용자로부터 문자열을 입력받아서 암호화하고 다시 복호화하는 프로그램을 작성하라. 다중 소스 파일 형태로 작성하라.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | #include <stdio.h> void print(char a[]); int main(void) { char s[50]; int key=17; int i=0; printf("문자열을 입력하세요: "); gets(s); print(s); for(i=0;s[i]!='\0';i++) { s[i]=s[i]^key; } printf(" "); print(s); printf("로 엔코딩됨.\n"); print(s); for(i=0;s[i]!='\0';i++) { s[i]=s[i]^key; } printf(" "); print(s); printf("로 디코딩됨.\n"); return 0; } void print(char a[]) { int i=0; for(i=0;a[i]!='\0';i++) { printf("%c", a[i]); } } | cs |
만약 키가 32 (100000) 이면 공백 이후 문자가 출력이 안되는데요 그 이유는 공백의 아스키 코드가 32(100000) 인데,
i am a boy 에서 i 이후 나오는 공백과 xor 연산을 하게 되는 것을 볼 수 있습니다. 그런데
같은 수를 XOR연산하면 무조건 000000 이나오고 이것의 아스키코드는 널문자(\0) 입니다. 따라서 조건문이 종료되버립니다.
반응형