KISA 에서 만든 SEED CBC 를 사용할 일이 있었다. 64bit 에서 이상하게 동작해서 분석해 봤는데 문제는 ENDIAN 선언 때문이었다.

KISA_SEED_CBC.h 파일에서 아래 내용에 문제가 있었다.

#if __alpha__ || __alpha || __i386__ || i386 || _M_I86 || _M_IX86 || \
 __OS2__  || sun386 || __TURBOC__ || vax  || vms  || VMS  || __VMS || __linux__
#define LITTLE_ENDIAN
#else
#define BIG_ENDIAN
#endif

MicroSoft Visual Studio 에서 x64 빌드를 할 경우 _M_X64 가 선언되는데 이게 빠져 있어서 BIG_ENDIAN 으로 처리해서 생긴 문제였다. 아래와 같이 수정하면 된다.

#if __alpha__ || __alpha || __i386__ || i386 || _M_I86 || _M_IX86 || _M_X64 || \
 __OS2__  || sun386 || __TURBOC__ || vax  || vms  || VMS  || __VMS || __linux__
#define LITTLE_ENDIAN
#else
#define BIG_ENDIAN
#endif

참고 : KISA SEED 소스 코드

728x90

+ Recent posts