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