tcp/ip 에코 서버에서 read와 write에 문제가 생겨요 c언어
환경은 리눅스이고 단순히 에코 서버 클라이언트와 서버샘플을 가지고 암호화 통신을 하고 싶어서
블록암호화 알고리즘 des를 쓰고 사용합니다.키랑 초기값은 하드코딩해서 일단 서로 알고 있습니다.
클라이언트가 메세지를 암호화 전송 -> 서버 복호화 풀고 다시 내용확인후 암호화해서 전송 ->클라이언트 복호화해서 본다.
이시나리오 입니다. 그런데 서버에서 복호화 까지는 잘되는데 다시 암호화 해서 전송을 하면 클라이언트에서 복호화가 안됩니다.
그래서 메세지가 전송이 되고 받는 부분을 "02X"로 찍어 봤습니다.(이게 헥사값으로 보인다고 들어서)
그렇게 보니 클라이언트가 보내는 부분과 서버가 받아서 복호화 하는부분까지는 정상적이고 세번다(전송,복호화,다시 전송전) 같은 값이 찍히는데
클라이언트에서 마지막으로 받으면 헥사 값이 틀리게 나옵니다.
이유를 몰라서 그냥 에코서버와 클라이언트를 가지고 그냥 전송을 주고 받을때 헥사값을 보니까
서로 메세지를 주고 받을수는 있지만 %02X 값은 서버와 클라이언트가 서로 틀리며 값또한 달라지더라구요
char *test = "1234567";
printf("%02X",test);
글쓰면서 생각을한건데 포인터라 주소가 값이 헥사값으로 표현이 되는건가;;;
제가 짠 코드파일을 첨부합니다.
do_cipher함수는 des를 돌리는 부분입니다. 메세지 넣구 ENCRYPT 넣어주면 암호화 되고 DECRYPT넣어주면 복화화 됩니다.
ㅠㅠ 이유를 몰라 하루종일 힘드네요
누가 좀 제발 도와주세요 ㅠㅠ
참고로 실행을 시키면 안될겁니다.openssl 라이브러리를 링크해야되는거라.. 눈으로라도 봐서 제발 도움을 주세요 ㅠㅠ 힘들어 죽겠어요
첨부 | 파일 크기 |
---|---|
test.zip | 3.73 KB |
아마
ntohl로 바이트 순서를 바꾸면 되지않을까 생각됩니다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
댓글 달기