이전 포스팅 글에서는 SHA-256이 무엇인지 간단히 알아보았다.
이번에는 KISA에서 제공한 SHA-256의 C/C++ 코드를 분석하겠다.
(전체 코드는 KSIA에서 다운로드할 수 있습니다.)
1. 헤더 파일
여러 가지의 매크로 함수를 사용하였다.
기본적으로 #define, #if, #ifdef, #ifndef, #undef 가 쓰인다.
1️⃣#if는 c언어에서 쓰이는 if와 기능이 똑같고,
2️⃣#ifdef는 무엇이 정의되어있는지에 대한 if
3️⃣#ifndef는 무엇이 정의되어있지 않을 때에 대한 if
4️⃣#undef는 해당 매크로 삭제
👆위의 블로그에서 매크로 함수에 대하여 알기 쉽게 설명해놓아서 많은 도움이 되었다.
궁금하다면 들어가서 보시길!
코드를 훑어보면
#ifndef SHA256_H
#define SHA256_H
#ifdef __cplusplus
extern "C" {
#endif
로 시작해서
#ifdef __cplusplus
}
#endif
#endif
로 끝난다.
여기서 extern "C" 는
함수명이나 특정 전역 변수명을 '심볼'로 저장하는 방식이 각각 다르기 때문에
C++ 소스에서 선언한 전역 변수나 함수를 C에서 사용하기 위해 사용하였다.
엔디안 방식을 결정하는 부분은 아래와 같다.
#if defined(USER_BIG_ENDIAN)
#define BIG_ENDIAN
#elif defined(USER_LITTLE_ENDIAN)
#define LITTLE_ENDIAN
#else
#if 0
#define BIG_ENDIAN
#elif defined(_MSC_VER)
#define LITTLE_ENDIAN
#else
#error
#endif
#endif
여기서 _MSC_VER 라는 변수가 나온다.
이는 현재 사용 중인 Visual Studio의 버전을 나타내는 것으로,
사용하는 Visual Studio 버전에 따라 달라진다.
코드를 실행할 때 사용하는 엔디안이 무엇인지 궁금하다면?
main() 함수 안에 엔디안 방식이 무엇인지 출력해보는 방법이 있다.
- 출처 -
'Security > SHA' 카테고리의 다른 글
[SHA-256] 코드 및 알고리즘 분석 - (5) (0) | 2021.07.16 |
---|---|
[SHA-256] 코드 및 알고리즘 분석 - (4) (0) | 2021.07.14 |
[SHA-256] 코드 및 알고리즘 분석 - (3) (0) | 2021.07.14 |
[SHA-256] 코드 및 알고리즘 분석 - (2) (0) | 2021.07.13 |
SHA-256 개념 간단 설명 (0) | 2021.07.12 |