은행 데이터베이스 하나 만들고,

ATM 기계들 만들어서 은행놀이 좀 해보고 싶은데

서버에 컴공이 한명 있다보니까 이게 보안이 좀 신경쓰였다


ATM기계에다가 프로그램을 깔아놔도, 이게 그냥 프로그램 코드를 열어볼 수 있는 상황이다

그러면 프로그램을 변조해서 다른 메세지를 내 데이터베이스로 보내면 꼼짝없이 돈이 줄줄 흘러간다.


이걸 막으려고 생각을 나름 해봤는데, 프로그램 코드를 암호화시킨다음에 실행할때마다 복호화해서 돌리면 어떨까 했다.

코드를 열어봐도 아무것도 못하게 만들어버리는거다.


마침 OpenComputers 모드에 data card라는 아이템이 있었다. 다양한 고급 알고리즘 함수를 제공한다고 설명서엔 써있는데,

그 아이템 2티어에 AES 128비트 암호화 함수가 내장되어 있더라. 왜있는진 모르겠는데 있음

모드 만든놈이 개변태새기인거는 잘 알겠다.


아무튼 신나서 바로 암호화 api를 만들어봤다.


구동 테스트도 해봄




이 코드를 암호화 해보기로 했다.

그냥 hello! (1/100)부터 시작해서 hello! (100/100)까지 출력하는 프로그램이다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c91965a9ab687eb5c155fc24ffe07


내가 쓰려고 만든 api 안엔 대충 이런 함수들이 있다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c9196599cb68ae80e4d09c24ffe33



먼저 암호화 할때 쓸 128비트 키를 랜덤하게 하나 만든다음 저장했다.

key 라는 파일명으로 저장해놨다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c91965ecbe386bf5e4057c24ffe3b


해당 파일을 열어보면 이렇게 나온다

그냥 아스키코드 16개 = 128라서 저따구로 나오더라

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c91965cc7b78beb5f4d58c24ffe22


이제 기존의 파일 코드를 위의 키값을 사용해서 암호화했다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c919659c6b387bb5a410bc24ffefe


암호화된 코드의 모습이다

진짜 ㅈㄴ 하나도 못알아보겠다. 흡족하다

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1fd52878ee276b10907280f0c64c70c6da0741cec3638fad5


한줄한줄 AES로 바꿔버린다음 걔네 바이트를 숫자로 기록하게 시켰다.

그냥 저장하니까 중간중간 줄바꿈문자 들어가있어서 줄이 달라져가지고 복호화에 차질이 생겼음

88줄짜리를 변환했는데 104줄 되어있고 이래서 걍 풀어서 바이트를 기록하게 했다.



이제 다시 복호화 해본다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c91965e9ab385bf0b110cc24ffebe


원래의 코드가 한줄한줄 복원되는 모습이 보인다. 결과를 확인해봤다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c91960e9ce4d2b90f430ec24ffe8a

원래의 코드가 정확하게 돌아왔다.



실행도 ㅈㄴ 잘된다. 

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c91960bcee486ed5b4057c24ffe0a

아주 맘에 든다.


바로 페이스트빈에 붙여서 내 계정에다가 적어놨다.

viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1903e8281e378bf012a1a0c9196079db485b80b410dc24ffedd



제일 골치였던거를 해결했으니

이제 은행 만들어지기까지 얼마 안남은거같다

뿌듯함


그리고 이거 마크 맞다


viewimage.php?id=3ea9d530e0&no=24b0d769e1d32ca73ded84fa11d028310ef2ab22591d9bdbf8feaebf595ea2e88aa43ac03f8cf3b1fd52878ee276b10907280f0c36c05d6fa0271fb93638fad5