안녕하세요 스페로 입니다. ..
일단 여기는 인터베이스 게시판인데 실수 하신듯 하군요...
힌트만 드리겠습니다.
비트 연산 XOR는 같은 비트 1과 1 또는 0과 0일대 거짓 즉 0을
서로 다른 비트 0과 1 또는 1과 0 일때 참 1을
예를 보이면
1 XOR 0 = 1
1 XOR 1 = 0
그럼 좀더 복잡하게 2비트를 해보죠
10 XOR 01 = 11
그럼 암호에 원리를 해볼까요
위에서 결과 11과 01을 XOR연산 해봅시다.
11 XOR 01 = 10
결과가 처음에 10이 됫죠
즉 문제는 입력된 문자열을 하나의 문자로 서로 XOR연산 시켜서 암호화된 문자열을 만들고
그걸 다시 하나의 문자로 XOR연산 시키면 처음에 입력된 문자열이 된다는 의미죠
님께서 어렵게 생각하는 것은 ^ (XOR) 연산자 한번으로 끝나는게 아닙니다.
모든 문자열을 하나하나 해줘야죠 루프를 돌리셔야 하고요
내부적으로 문자 (char) 는 1바이트 8비트로 각각의 비트들이 XOR연산을 한답니다.
그럼 ^^
??? 님이 쓰신 글 :
: 자신이 원하는 단어(영문 10자 이내)를 입력받고 비밀 키와 XOR 연산자를 이용하여 암호화하고자 한다. 단, 비밀키는 영문자 1자를 입력받아 사용한다. 먼저 단어의 각 문자를 비밀키와 XOR를 하여 암호화된 단어를 출력해 보시오. 그리고 암호화된 단어를 똑같은 문자로 다시 XOR하면 원래 단어가 출력됨을 보이시오. <=============== 이게 문제 인데엽 잘 모르겠어엽 ㅠ.ㅠ
:
: #include <stdio.h>
:
: void main()
: {
: char a,b,c,d;
: c=a ^b;
: d=c ^c;
:
: printf("자신이 원하는 단어 입력하시오.(영문 10자 이내) \n");
: scanf("%s \n",&a);
: printf("비밀키 입력하시오.(영문 1자) \n");
: scanf("%c \n",&b);
:
: printf("암호화된 단어 => %s \n",c);
: printf("원래 단어 => %s \n",d);
: } <============= 한번 이렇게 풀어 봤는데 Nell 밖에 않나오네엽 ㅠ.ㅠ
: c언어 고수님 도와주세엽 ㅠ.ㅠ
:
|