반응형
  • 숨쉬는 공부방
    • Security
      • SHA
    • Hardware Security
    • Verilog HDL
    • ─── ✿ ───
      • IT
      • 이것저것

블로그 메뉴

  • 홈
  • 모든 글
  • 방명록

인기 글

최근 글

태그

  • Modelsim
  • Verilog
  • SHA256
  • C코드
  • 순차회로
  • 조합회로
  • FSM
  • KISA
  • SHA-256
  • 설계

hELLO · Designed By 정상우.
숨.

후하후하

Security/SHA

[SHA-256] 코드 및 알고리즘 분석 - (1)

2021. 7. 12. 17:14

이전 포스팅 글에서는 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는 해당 매크로 삭제

더보기

 

C언어 #define, #if , #ifdef , #ifndef란

안녕하세요. 오늘은 전처리기 #define, #if, #ifdef, #ifndef에대해 알아보겠습니다. 먼저 전처리기란 컴파일 하기 전에  #가 붙은 코드를 지정해놓은 코드로 변경하는 일입니다. 사용자가 직접 할 필요

wowon.tistory.com

👆위의 블로그에서 매크로 함수에 대하여 알기 쉽게 설명해놓아서 많은 도움이 되었다.

궁금하다면 들어가서 보시길!

 


코드를 훑어보면 

#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() 함수 안에 엔디안 방식이 무엇인지 출력해보는 방법이 있다.


- 출처 -

https://seed.kisa.or.kr/kisa/Board/21/detailView.do

https://5kyc1ad.tistory.com/343

'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
    'Security/SHA' 카테고리의 다른 글
    • [SHA-256] 코드 및 알고리즘 분석 - (4)
    • [SHA-256] 코드 및 알고리즘 분석 - (3)
    • [SHA-256] 코드 및 알고리즘 분석 - (2)
    • SHA-256 개념 간단 설명
    숨.
    숨.

    티스토리툴바