본문 바로가기

c++

(48)
libRTEA rev0.2 : TEA 인코딩/디코딩 C++ class 저번주에 올렸던 libRTEA 에 몇가지 버그가 있는 것을 수정하고, 기능을 추가 하였습니다. 혹시라도 사용하신 분이 계시다면 이것으로 업데이트 해 쓰시면 좋겠습니다. 바뀐 헤더는 다음과 같으며, HexChar 라는 것이 추가 되었습니다. 위 캡쳐 이미지 처럼 문자열/바이트 배열 을 Hex 값을 표시하는 문자열로 처리 해 주는 기능 입니다. 활용도는 암호화 데이터를 ASCII 내에서 처리 할 수 있도록 뭔가 만들 수 있게 해 주는 정도 이겠습니다.
TEA 알고리즘을 응용한 간단한 class : RTEAcodec AES 는 무겁고, 뭔가 좀 작고 쓸만한 암호화 모듈로는 나온지 오래 되었지만서도 128bit 인코딩을 지원하는 TEA 알고리즘이 있습니다. 인터넷에 여러 다채롭고 호화로운 소스가 널렸긴 한데, 막상 쓰려면 뭘 어찌 하라는건지 모르도록 만든 소스가 많더군요. 그래서 대충 쓸만하게 나름 만든 소스를 공개 합니다. CodeBlocks 에서 컴파일이 되며, MinGW 에서 이상없이 구동 됩니다. 내부적으로 버그가 있을수도 있긴 합니다만 ... 그건 알아서 ... 참조하면 되는 소스 : src\libRTEA.cpp/h 파일. 예제 : main.cpp 저작권: opensource 이며, 어떠한 라이센스도 없으며, 책임도 없습니다. 제가 만든 코드를 사용해서 문제가 생기는 부분에 저는 책임을 지지 않습니다! lib..
DICOM tag reader/writer ... 그냥 내가 만들어 쓴다 -> 만들었다. 인터넷을 아무리 뒤져도 ... 그놈의 DCM 파일 읽고 쓰는 라이브러리 만 구하려니 .. 다 상용에다 쓰기도 빡센 이상한 애들 뿐. 그래서 회사에서 팀장님이 구해 준 C# 소스를 주워다 보고 C++ 로 그냥 새로 만들었다. (아 ... C# 으로 만들면 정말 얼마나 낭비가 심한지 다시금 깨닫게 되는 계기가 되기도 ... ) Tag 를 Element 단위로 읽어 들이고 써 주기 때문에 필요한 것 만 수정해서 다시 DCM 으로 만들수 있다. minGW 를 이용해서 만들어 진 상태이며, 코드상에 포인터 계산이나 이런 부분이 모두 integer-safe 코드 이므로 32bit/64bit 모두 사용이 가능하며, little-endian 및 big-endian 모두 사용이 가능하다. 아직은 처음 버젼이라 JPEG,..
MinGW 환경 C++ 에서 Thread 간편히 쓰기 위한 CustomThread 클래스! MinGW 으로 C++ 컴파일 해서 쓸시 , thread 처리를 위해 extern"C" 남발을 했던 기억이 있습니다. 아련한 기억인데 .. C++ 로 class 객체화를 하는데 있어 , thread 의 stdcall 함수 제작은 귀찮음의 걸림돌이 되었다고 생각 됩니다. 그래서 만들었던 것이 바로 이 CustomThread !!! 클래스 원형을 보면 다음과 같습니다. 그리고 실제 사용하는 입장에선 위의 클래스를 상속 받아, Setup 과 Execute(void*) 를 구현해 주면 되는 것 입니다. 예) 예제 소스는 CodeBlocks 로 만들어 졌습니다. 첨부 파일의 소스를 사용할 수 있으니 필요하신 분은 사용해 보시기 바랍니다. 본 소스는 공개로 만든 것 이므로 ,이 코드로 인해 발생하는 문제점은 제가 ..
C++ 에서 만든 DLL 과 math 연동시 오류 : Invalid Floating Point Operation 어느 댓글을 남겨 주신 광란의사랑님 말씀대로 이때까지 해 보지 않았던 math 연동 DLL 을 테스트 해 보았습니다. 일단 델파이 에서는 표시 할 수 없는 -1.#INF 가 나오므로 FloatToStr() 함수를 거치면 NAN 으로 표시 됩니다. 그냥 만들게 되면 Invalid Floating Point Operation 오류 가 발생 하는데, 이는 Delphi 의 FPU monitor 플래그 때문에 발생 하는 문제 입니다. 이 문제는 다음 실제 사용된 코드와 같이 쓰시면 해결이 가능합니다. 아래에 예제 샘플을 추가 합니다. 사용된 툴은 CodeBlocks 와 minGW , 그리고 TurboDelphi Explorer(2006) 입니다. 압축을 풀면 CUSTMATH 디렉터리와 , DELPHI 가 각각 있..
class 내 static member. 가끔 프로그래밍을 하다 보면 참 쉬운걸 안해놓고 "왜 안돼는거지?" 라는 의문에 패닉상태로 가는 경우가 있습니다. 이번에도 static member 를 만들어 두고 그걸 초기화를 안해 놓고 왜 심볼이 링크할때 없다고 그러는거지? 라는 어철구뉘 없는 짓을 하고 있는 자신을 발견했었죠 -_-; 그래서 저와같은 일이 없길 바라는 마음에서 약간의 허접 강좌를 써 보도록 하죠- 먼저 코드 입니다. #include #include #include class testStaticOne { static void *pClass; public: testStaticOne(); virtual ~testStaticOne(); void testFunc1(); void testFunc2(); private: void testFunc..
[Win32.C] 비트맵으로 폼(윈도우) 깍기. 이전에 Delphi 용으로 소개한 적이 있는 폼(윈도우 또는 다이얼로그 모두)을 깍는 방법을 소개 하고자 합니다. 단, 이방법은 코드상의 길이는 짧으나 속도가 느림을 감안해야 합니다. 이유는 바로 GetPixel() 함수 때문이지요. 개선해야 하는 것은 GetDIBits() 함수를 이용해서 원본으로 사용할 비트맵의 픽셀배열을 가져와서 처리 하는 방법이 가장 빠른 방법이 될 것으로 보입니다. 일단 간단히 소개하자면.. 다음 코드를 참조 해 주시기 바랍니다. HRGN BitmapToRegionEx(HBITMAP aBmpHandle, INT32 width, INT32 height, COLORREF aColor) { INT32x; INT32y; COLORREFaPixel = 0; HRGNtempRGN = NUL..
minGW (C/C++ compiler) for windows64bit OS 가 windows vista64 이다 보니 , 64bit 어플리케이션 개발에 관심이 가기 시작 했습니다. CPU 의 레지스터가 64비트 이다보니 , 아주 오래전 Pentium MMX CPU 가 처음 나왔을때의 감흥 까지는 아니지만 단순 작업에 있어서는 유리할 것으로 예상 되는군요 ^^ MMX 의 경우 DOS 에서 사용할 수 있는 일반 레지스터가 16/32 비트 인 문제를 해결 할 수 있는 좋은 방안 이었습니다. 다만, MMX 명령은 ALU + FPU 레지스터를 통합해서 사용하기 때문에 (그래서 32비트~64비트 고속 복사만 가능) 사용중엔 FPU 사용이 불가능한 단점이 있었죠. 이런 문제들으 가장 큰 문제점은 바로 ... 컴파일러 단위에서 지원불가능 이겠습니다 -_-; 뭐든 C / C++ / PAS..