안반장

Galaxy S4 Switch Cover 케이스 출시기념! 체험 리뷰

ElevenPlus Switch Cover Case 체험 리뷰 Movie Passengers (2016) 25가지의 컬러조합이 가능한 일레븐플러스 스위치 커버 이번에 스마트폰 네이버 카페에서 체험단 신청해 당첨되어 받자마자 찍어봤습니다. 제가 쓸 건 아니고 와이프가 사용할 것이기에 Inspiring Orange와 Gold Pink로 신청했습니다. Movie Passengers (2016) Movie Passengers (2016) 환경까지 생각하는 일레븐플러스 스위치 커버 제품 케이스는 두껍고 튼튼한 종이재질로 된 하얀 판위에… 더 보기 »Galaxy S4 Switch Cover 케이스 출시기념! 체험 리뷰

크롬의 개발자툴 스킨 바꾸기

시작하며 웹개발하실때 크롬은 거의 필수품이라 많이들 쓰시리라 생각합니다. 크롬 개발자도구에서 사용할 아주 괜찮은 스킨이 하나 나와서 소개하려고 합니다. 왠지 ST2에서 사용하는 테마와 느낌이 유사해서 그런지 더 마음에 드네요! 우선 뭘 소개하려는 것인지 밑에 이미지를 봐주세요!   변경 전모습 크롬 적용 전   변경 후모습 크롬 적용 후   나만의 스타일 만들기 우선 크롬 개발자 도구의… 더 보기 »크롬의 개발자툴 스킨 바꾸기

PHP로 구현한 SEED128 + CBC + PKCS5 암호화

SEED 암호알고리즘
SEED를 제공하는 인터넷진흥원 사이트 스크린샷

 

Prologue

회사에서 미션이 하나 떨어졌습니다. 한국인터넷진흥원에서 순수 국내기술로 개발된 SEED128을 PHP로 구현하는 것 입니다.
참고로 한국인터넷진흥원에서 JAVA나 C언어로는 SEED소스를 제공하고 있습니다. 심지어 안드로이드와 Objective-C도 제공하는데 PHP만 없습니다.
SEED에 관련된 내용은 해당 사이트에서 참고하시기 바라오며, 현재 표준으로 채택되어져 각종 금융기관에서 널리 사용되고 있다는 것만 알고계시면 될 것 같습니다.

SEED 암호화 기술은 블록 암호 알고리즘을 채택하고 있어 통신하기 위한 곳 모두 동일한 Key를 가지고 있어야 암호화와 복호화가 가능합니다.
저 역시 금융기관쪽과 중요한 데이터를 통신을 하기 위해서 사용하는 것 이며 해당 금융기관쪽은 자바로 이미 구현되어 있어 동일한 Key를 가지고 저희쪽 PHP로 암/복호화가 가능해야 합니다.
사실 말이 PHP로 구현하는 것이지 Native 언어는 명확한 기준으로 변수타입들이 정해져 있기라도 하지만 웹 전용으로 유연하게 만들어진 PHP에서 지원할리 없기때문에 무수한 삽질이 예상되었습니다.

우선 검색하기 시작했습니다. 다행히도 SEED자체에 대한 프로세스는 PHP로 구현해놓으신 분이 계셨습니다. 아래에서 class.seed.php를 다운로드 받으시면 됩니다.
다시한번 이자리를 빌어 정말 감사드립니다.

출처: http://docs.cena.co.kr/textyle/15770

하지만 위의 소스는 순수하게 SEED만 구현해 놔서 제가 원하는 것을 구현하기에는 부족했으며, 기존 class.seed.php 클래스는 운영체제가 64bit인 경우 Integer의 Max값이 커지다보니 라운드키의 정수값을 오버플로우 시키지 못하는 증상으로 인해 값을 제대로 출력하지 못하는 문제가 있어 이 부분은 별도로 해결했습니다.

[box type=”info”]자바는 플랫폼에 관계없이 32비트 고정이지만, PHP는 플랫폼에 따라 32비트면 정수의 최대값이 2147483647이고, 64비트면 9223372036854775807로 자동으로 할당됩니다.[/box]

암호화를 운용하기 위해서 저의 경우에는 CBC와 PKCS5 방식으로 구현을 해야하며 통상적으로 검색하면 나오는 IV의 값도 PHP에서 사용하는 랜덤 스트링 형태가 아닌 자바와 동일하게 바이트 배열로 정해진 값을 만들어서 써야 하기 때문에 본젹적인 개발과 검색에 들어가기 시작했습니다. 말 자체를 이해 못하시는 분들을 위해 용어에 대한 정의들 부터 살펴보겠습니다.

 

암호 블록 체인 방식 (CBC)

그림을 보면 더 이해가 잘 되야 하는데~ 저는 이런 그림을 별로 좋아하지 않아서 이해가 잘 되지 않았습니다.
간단하게 설명하면 이전 블록의 암호문을 현재 평문 블록을 암호화할 때 사용하면서 운용하는 모드입니다. 따라서 같은 평문들도 서로 다른 암호문 블록으로 순차적으로 암호화가 이루어지게 됩니다. 하지만 처음 나오는 평문을 암호화할 암호문이 없기 때문에 보통 랜덤으로 만들게 되며 이를 IV(초기화 벡터)라고 합니다.
평문의 첫번째 블록이 IV와 XOR을 수행하고 나서 암호화를 수행하게 되며 다음은 그 암호화된 블록이 평문의 다음블록을 XOR하는 식으로 평문 블록을 마칠때까지 반복하는 구조입니다. 이게 저도 수도 없이 봤지만 쉽게 이해가 되지 않더군요! 그래도 이해하고 넘어가셔야 합니다. 아래는 위키피디아에서 발췌한 이미지를 첨부하였으며 이해가 안되시는 내용은 구글링을 통해 확인하시기 바랍니다.

Cbc encryption.png
CBC 운영모드에서의 암호화
Cbc decryption.png
CBC 운영모드에서의 복호화

더 보기 »PHP로 구현한 SEED128 + CBC + PKCS5 암호화

코드 편집기 Sublime Text 2 소개

  Prologue 보통 에디터하면 PHP/HTML/CSS 자동완성으로 좀더 편리하게 코딩할 수 있는 도구라고 생각하고 있습니다. 저도 메모장부터 시작했지만 맥에서는 Coda를 사용하고 PC에서는 EditPlus를 사용해왔습니다. 하지만 이제 떠날때가 온 것 같습니다. [box] 가볍고 확장성이 뛰어난 Sublime Text 2라는 에디터를 소개합니다.[/box] 혹 할만한 동영상을 찾지 못해 간단한 Feature에 대해서 설명해놓은 동영상을 첨부했습니다. Sublime Text 2 사이트의 메인페이지를 보시면 다른… 더 보기 »코드 편집기 Sublime Text 2 소개

IE9 이하에서 HTML5 사용을 위한 필수요건

현재 회사 프로젝트 홈페이지 구축하면서 IE에서 버전 및 쿼크/표준모드에 따라 레이아웃이 무너지는 증상을 잡기 위해 사용중인 것들입니다. 몇년을 IE 신경안 쓰다가 다시 IE를 신경쓰면서 작업하려고 하니 미칠 것 같습니다. ㅋㅋ 특히나 IE8에서 레이아웃이 무너지는데 저 같이 고생하시는 분들 없으셨으면 합니다.   IE9 미만에서 HTML5 엘리먼트 지원 (구글 코드에서 다운로드)     JavaScript <br /> <!–[if… 더 보기 »IE9 이하에서 HTML5 사용을 위한 필수요건

G4와 iMac에서 외장하드 같이 쓰기

프롤로그 와이프의 부탁으로 시작된 일이였지만, 한번의 쓰라린 실패를 겪고 정말 힘들게 완수한 작업입니다. 힘들었던 만큼 고생하지 마시라는 의미에서 좀 상세하게 포스팅 해볼까 합니다. G4에 사용할 외장하드 구매기 및 사용기입니다.   첫번째 실수이자 마지막 실수 씨게이트 백업플러스를 구매한건 상식도 없는 무지한 저의 최대의 실수였습니다. G4를 써본적이 없으니 아무생각 없이 구매한 것이였습니다. G4는 USB1.1만 지원합니다. 즉, 데이터 전송… 더 보기 »G4와 iMac에서 외장하드 같이 쓰기

윈도우7에서 가상 무선 공유기 만들기

회사에 사람이 많다보니 Wi-Fi가 그 역할을 제대로 하지 못하고 있어, 방법을 찾던 중 SoftAP라는 것이 있어 소개하고자 합니다. SoftAP는 가상와이파이 어댑터를 만들어 주는 것으로 실질적으로 무선랜을 공유기처럼 만들어주는 것을 말합니다. 예를 들자면 제 PC의 로컬연결의 공유를 통해 가상의 무선랜카드로 인터넷을 송신해 결국 제 아이폰에서 인터넷을 할 수 있게 해주는 것 입니다. 써놓고 보니 말이 참 어렵네요!… 더 보기 »윈도우7에서 가상 무선 공유기 만들기

팝업에서 부모창의 iframe으로 접근하기

새로운 회사에 이직해 정말 오랫만에 자바스크립트를 만지다 보니 많이 헷갈립니다. 제가 근무하는 곳은 주로 IE위주로 작업이 되어 있어 타 브라우저에서 작동 안되는 경우가 많습니다. 이것들을 언제 고치나 앞이 캄캄하기도 하지만 덕분에 좀더 깊이 있게 배울 수 있지 않을까 하는 마음으로 첫 테이프를 끊습니다. 부모창에서 iframe을 두고 그 iframe에 팝업 호출 함수를 통해 팝업을 띄우는 방식에 대해서… 더 보기 »팝업에서 부모창의 iframe으로 접근하기

Reflector를 활용한 아이폰 앱 영상 녹화하기

Reflector 소개 앱의 사용방법에 대한 영상을 제작해보고자 검색중 Reflector와 AirServer라는 프로그램을 알게 되어 둘다 사용해보았는데요~!! 개인적으로는 Reflector가 사용하기 편하고 스트리밍 하는 속도도 쾌적한듯해 소개해보고자 합니다. (AirServer는 녹화 기능이 없습니다) 간단하게 말해 Reflector는 나의 Mac이나 PC를 AirPlay 디바이스로 인식하게 해주는 유틸리티입니다. 따라서 이 프로그램을 설치하면 아이폰이나 아이패드의 AirPlay 기술을 이용해 아이폰에서 실행한 영화나 음악을 간편하게 맥이나… 더 보기 »Reflector를 활용한 아이폰 앱 영상 녹화하기

Notification Center에서 메시지가 사라지지 않는 증상

그림1의 알림센터에서와 같이 메시지를 아무리 눌러도 메시지가 사라지지 않는 증상을 겪으신 분들이 계신지 모르겠네요!! 이런 증상을 겪기 위해서는 로컬 노티를 2가지이상의 형태로 분류해서 사용하면 만날지도 모릅니다. 저의 경우는 노트 리마인더와 알람 2가지를 로컬 노티로 구현 중인데요, 재밌는 것은 노트를 알려주는 리마인더는 아무리 해도 잘되고 알람쪽만 설정하면 그림1과 같이 메시지가 남아있더군요! 그림1 저걸 다시 눌러도 그림1의… 더 보기 »Notification Center에서 메시지가 사라지지 않는 증상

나의 앱에 앱스토어 화면 보기

소개 아시는 분들은 아시겠지만 iOS 6.0부터 지원되는 것이라 모르시는 분들이 많은 것 같습니다. 아래 그림1을 보시면 현재 회사에서 소개하고 싶은 여러 앱들이 있습니다. 보통 누르면 나의 앱에서 빠져나가고 앱스토어 앱으로 이동합니다. 다른 앱으로 나가는게 썩 보기 좋지 않았었는데, 이제 그런 고민 하지 않아도 될 것 같습니다. 그림1   변경후, 그림2처럼  iOS6부터는 앱 자체적으로 불러들일 수… 더 보기 »나의 앱에 앱스토어 화면 보기

iPad에서 UIModalPresentationFormSheet 사용시 키보드 내리기

아이패드 작업시 그림1과 같은 모달창에서 키보드를 입력해야 하는 경우가 있습니다. 일반적으로 키보드 작업을 하고 취소나 오케이를 누르면 키보드도 같이 내려가야 합니다. 그림1     어라! 하지만 그림2와 같이 키보드가 내려가지 않았습니다. 어떻게 된 것일까요? 저도 삽질 끝에 알아낸 결과라 기록으로 남겨둡니다. 그림2   Stackoverflow 에서 검색을 해보았더니 의견이 분분하더군요! 심지어는 애플의 버그라고 하시는 분들도 계셨습니다.… 더 보기 »iPad에서 UIModalPresentationFormSheet 사용시 키보드 내리기