[2023 04 17] 04월 프로젝트 - 파일 암/복호화 소프트웨어 개발 - Whitmem
[2023 04 17] 04월 프로젝트 - 파일 암/복호화 소프트웨어 개발
Develop History
2023-04-16 06:21 게시 b4fd05a732553545ee86

0
0
236
이 페이지는 외부 공간에 무단 복제할 수 없으며 오직 있는 그대로 게시되며 부정확한 내용을 포함할 수 있습니다. 법률이 허용하는 한 가이드 라인에 맞춰 게시 내용을 인용하거나 출처로 표기할 수 있습니다.
This page is not to be distributed to external services; it is provided as is and may contain inaccuracies.
암/복호화 소프트웨어 개발 프로젝트
오디오 소프트웨어를 완성하기 전 쉬어가는 시간으로, 또 개인 필요에 따라서 암/복호화 소프트웨어를 개발하였다. 구체적인 계획을 세우지 않고 즉흥적으로 개발하였으며, 개발 시간은 놀고 먹고 자며 포함해서 약 1 - 2일이다. 버전 문제 없이 집중해서 개발했으면 약 2-3시간 소요되었을 것으로 보인다.
미리보기
소프트웨어 명칭은 가명으로 실제 존재하거나 있는 상표, 상호와는 전혀 관련이 없음을 알린다. 이 소프트웨어는 개인적인 목적을 위해서 개발된 것으로 공개 배포되지는 않는다. 기본적인 폰트는 나눔고딕을 활용하며, 제목 창은 윈도우 운영체제에서 할당된 폰트이므로 별도 조절할 수 없어 기본값으로 나둔다.
암/복호화 소프트웨어
원하는 파일을 드래그 드롭아웃하여 대기열에 올리거나, 레지스트리에 Context-Menu를 추가하여 프로그램을 인자로 하여금 바로 실행할 수 있다.
대기열에 올린 모습
암호를 입력한 뒤 암호화 버튼을 눌러 비밀번호의 재 입력을 확인한다.
암호를 입력하고 확인을 누르면 해당 대기열에 존재하는 디렉터리 및 파일들의 내부까지 순회하며 모든 파일 트리를 분석하고 암호화할 파일들을 내부 대기열에 올린다.
암호화
그런다음 암호화를 진행하며, 암호 알고리즘은 AES-256 방법에 의해 암호화된다. 데이터는 파일스트림으로 바로 디스크에 작성되며, 이전 암호화되지 않은 데이터는 제거된다. 물론, 여기서는 디지털 포렌식까지는 고려하지 않는다. 따라서 파일을 그냥 일반적인 방법으로 제거한다. 이렇게 암호화가 완료되면 완료창이 뜨며 마칠 수 있다.
완료 창
복호화 과정도 이와 동일하다.
고려 사항
고려 사항이 하나있는데, 이미 암호화된 파일을 다시 암호화하려고 하는 경우 "작업 안함"으로 분류된다. 이러한 파일의 구분 방법은 파일의 머리부분에 프로그램 전용 태그를 심는 방식으로 구현했다.
Stream stream; byte[] systemtag = new byte[] { (byte)'W', (byte)'h', (byte)'i', (byte)'t', (byte)'m', (byte)'e', (byte)'m', 0x05, 0x06, 0x07, 0x08, 0x99 }; byte[] streamtag = new byte[12]; byte[] versiontag = new byte[4]; 이하 자세한 소스코드 생략 ...
위 코드는 소스코드의 아주 극 일부이며, 태그를 암호화한 파일에 할당하고 처리하고자 하는 파일과 비교하는 부분이 필요하다.
클래스
이번 제작에서는 크게 달라진 점이 있는데, 바로 재 활용 가능한 소스코드, 즉 유지보수에 용이하게끔 클래스를 구축하였다. 파일 암호화 기능을 한 곳에 다 합치는 것이 아닌, 버퍼를 암호화하는 BufferEncryptor 와 하나의 스트림을 암호화하는 StreamEncryptor 이 스트림의 머리에 태그를 붙여주는 StreamTagWriter 등이 있으며, UI 와 같은 호출위치에서 클래스를 조립함으로써 처리를 요청할 수 있게끔 의도하였다.
클래스 구성
댓글 0개
댓글은 일회용 패스워드가 발급되며 사이트 이용 약관에 동의로 간주됩니다.
확인
Whitmemit 개인 일지 블로그는 개인이 운영하는 정보 공유 공간으로 사용자의 민감한 개인 정보를 직접 요구하거나 요청하지 않습니다. 기본적인 사이트 방문시 처리되는 처리 정보에 대해서는 '사이트 처리 방침'을 참고하십시오. 추가적인 기능의 제공을 위하여 쿠키 정보를 사용하고 있습니다. Whitmemit 에서 처리하는 정보는 식별 용도로 사용되며 기타 글꼴 및 폰트 라이브러리에서 쿠키 정보를 사용할 수 있습니다.
이 자료는 모두 필수 자료로 간주되며, 사이트 이용을 하거나, 탐색하는 경우 동의로 간주합니다.