default.mp4
-
<모든 메시지는 문자열 형태이며, 복수의 정보가 필요할때는 ‘/’로 구분한다.>
-
모드 선택 메시지
- 클라이언트 -> 서버: (0,1,2) 중 하나를 전송
- 서버에서는 메시지에 따라서 쓰레드 실행
-
업로드(1번)
- 클라이언트 -> 서버: 암호화를 원하는 문장 전송(대문자 알파벳 한정)
- 서버 -> 클라이언트: 암호화 완료 후 결과물을 “암호/키” 형식으로 전송
-
다운로드(2번)
- 서버 -> 클라이언트: DB에 파일이 있는 날짜들을 조회하여 “날짜/날짜/.../날짜“형식으로 전송
- 클라이언트 -> 서버: 다운로드를 원하는 날짜를 ”날짜“형식으로 전송
- 서버 -> 클라이언트: 해당 날짜 파일의 암호의 개수를 ”개수“형식으로 전송
- 클라이언트 -> 서버: 원하는 암호의 번호를 ”번호“형식으로 전송
- 서버 -> 클라이언트: 해당 날짜 파일의 번호를 ”암호/키“형식으로 전송
-
종료(0번) - 추가 메시지 없음
- TCP 서버로 구현 (포드 9150, HOST 임의 지정)
- 소켓
- 파이썬의 select 모듈을 사용 (블록킹되어 있다가 이벤트 발생 시 작동)
- well-known address가 바인딩된 소켓, 클라이언트와 연결된 소켓을 select에 등록
- 소켓에서 이벤트 발생 시 각 소켓에 맞는 기능 활성화
- 기능
- 업로드, 다운로드 모드 – 해당 모드 쓰레드를 실행
- 종료 모드 – select에서 해당 소켓 제거 후 클라이언트 소켓 닫기
- 만약 서버에 연결된 모든 소켓이 제거될 경우, 서버 소켓도 닫힘
- upload(클라이언트 소켓, 유저 id)
- 입력받은 문장을 암호화시켜 업로드
- download(클라이언트 소켓, 유저 id)
- 원하는 파일의 원하는 암호를 다운로드
- run(클라이언트 소켓)
- 클라이언트로부터 모드를 받고, 해당 쓰레드 실행
- serv(서버 소켓)
- 접속 요청을 수락하고, select에 등록
- main()
- 서버 소켓을 생성하고, select로 이벤트 신호 대기
- Upload()
- 평문을 입력받아 서버에 전송 후, 암호를 받음
- Download(파일 제목 데이터)
- 원하는 날짜와 번호를 전송 후, 해당 암호를 받음
- main()
- 소켓으로 서버에 접속 후, 모드에 맞게 함수 실행
- fileReader()
- Database폴더의 암호 파일들을 읽어서 딕셔너리 형태로 저장
- fileWriter(암호 데이터)
- 서버에서 새로 추가된 암호들을 당일 날짜의 파일로 저장
- Encoding(문장,[key])
- 입력받은 문장을 애니그마 암호화 방식에 맞춰 암호화 후, 사용한 세팅을 key로 만들고, “암호/키"방식으로 리턴
- Key도 같이 입력할 경우, 암호가 복호화된다.